Introdução Ao POO
Introdução Ao POO
Introdução Ao POO
IntroduçãoUnidade
à programação
x: Título da unidade orientada
a objetos (POO)
Quem sou eu
Júlio César Andrade
Bacharel em Engenharia de Computação - UEFS
Especialista em User Experience - UNIFACS
Mestrando em Ciências da Computação - UEFS
2
Roteiro
Contextualização e motivação:
Conceitos fundamentais:
3
CONTEXTUALIZAÇÃO
História da POO
4
CONTEXTUALIZAÇÃO
História da POO
5
ANTES DE COMEÇAR
Os arquivos ".class" são escritos pelo compilador em uma linguagem que não é de máquina, mas que
também não é legível pelos seres humanos. Essa linguagem é chamada de bytecode e não é
dependente de nenhuma plataforma de hardware ou de software.
6
ANTES DE COMEÇAR
7
ANTES DE COMEÇAR
Características do Java
● Orientada a Objetos;
● Fortemente Tipada;
● Sintaxe baseada no C++, mas com influências de
outras linguagens.
8
ANTES DE COMEÇAR
9
MOTIVAÇÃO
10
Programação orientada a objetos
Encapsulamento
Polimorfismo
Herança
Abstração
11
PROCESSO DE ABSTRAÇÃO E REPRESENTAÇÃO
Identidade: O que é?
12
PROCESSOS DE ABSTRAÇÃO E REPRESENTAÇÃO
Identidade: Gato.
13
PROCESSOS DE ABSTRAÇÃO E REPRESENTAÇÃO
14
PROCESSOS DE ABSTRAÇÃO E REPRESENTAÇÃO
15
Conceitos fundamentais
Classe: É o modelo para criar objetos.
16
Conceitos fundamentais
Objeto: Objetos são representações concretas
17
Conceitos fundamentais
Métodos: Representam o comportamento ou as
ações que um objeto pode executar.
Comer
Morder
Miar
18
public class Gato {
19
Método construtor em Java
O método construtor é um bloco de código especial dentro de uma classe que é
chamado automaticamente quando um objeto da classe é criado. Ele tem o mesmo
nome da classe e é usado para inicializar os membros da classe ou realizar outras
tarefas de inicialização necessárias.
20
Tipos em java
Os principais tipos são:
● int: Números inteiros.
● double: Números de ponto flutuante.
● char: Caracteres Unicode.
● boolean: Valores lógicos (verdadeiro ou falso).
● String: Sequência de caracteres.
21
Conceitos fundamentais
Herança: Na herança, uma nova classe, chamada classe
derivada ou subclasse, é criada a partir da classe base. A
subclasse herda todos os membros (atributos e métodos)
da classe base e pode adicionar novos membros ou
modificar os existentes.
22
Conceitos fundamentais: Herança
23
Conceitos fundamentais: Herança
24
Conceitos fundamentais: Herança
25
Dúvida comum
Uma classe em java pode herdar de mais de uma classe?
26
Conceitos fundamentais
Polimorfismo: O polimorfismo em POO refere-se à
capacidade de tratar objetos derivados de uma mesma
superclasse de maneira polimórfica e invocar métodos com
o mesmo nome, mas com comportamento diferente.
27
Conceitos fundamentais: Polimorfismo
28
Conceitos fundamentais: Polimorfismo
29
Conceitos fundamentais: Polimorfismo
30
Qual das afirmações está correta em relação ao polimorfismo e
a sobrescrita de métodos em Java?
31
Qual das afirmações está correta em relação ao polimorfismo e
a sobrescrita de métodos em Java?
32
Conceitos fundamentais
Encapsulamento: O encapsulamento em POO refere-se à
combinação de dados e comportamentos em uma classe,
controlando o acesso e a manipulação dos dados internos por meio
de métodos específicos.
33
Conceitos fundamentais
Ocultamento de informações em Java
+ Public
#
Protected
~-
Default Private
34
Conceitos fundamentais
Ocultamento de informações em Java
Public
Protected
Default
Private
35
Programação orientada a objetos
Encapsulamento
Polimorfismo
Herança
Abstração
36
Como analisar problemas para projetar soluções;
1. Entender o problema;
2. Identificar os objetos-chave;
3. Definir as classes;
4. Definir a hierarquia de classes
5. Estabelecer as relações.
6. Diagramar;
7. Codificar.
37
Ambientes de desenvolvimento
para linguagem Java.
38
Estrutura básicas em Java
39
Estruturas de controle em Java
IF e ELSE
40
Estruturas de controle em Java
Switch
41
Estruturas de
controle em Java
Switch
42
Estruturas de
controle em Java
Switch
Em Java, switch é uma estrutura
de controle que permite avaliar
uma expressão e executar
blocos de código com base no
valor dessa expressão.
43
Estruturas de repetição em Java
WHILE
44
Estruturas de repetição em Java
FOR
45
Controlando loops
Apesar de termos condições booleanas em nossos laços, em algum momento, podemos
decidir interromper o loop por algum motivo especial sem que o restante do laço seja
executado.
46
Controlando loops
Apesar de termos condições booleanas em nossos laços, em algum momento, podemos
decidir interromper o loop por algum motivo especial sem que o restante do laço seja
executado.
47
O método Main
O método main em Java é o ponto de entrada principal para a execução de um programa
Java. Ele é o método que o Java Virtual Machine (JVM) procura para iniciar a execução do
programa.
48
O método Main
public: Indica que o método é público e pode ser acessado por qualquer classe.
static: Indica que o método é estático, pertencendo à classe em vez de instâncias
específicas da classe. Isso é necessário para que a JVM possa chamar o método sem criar
uma instância da classe.
void: Indica que o método não retorna nenhum valor.
main: Este é o nome do método.
String[] args: É um parâmetro que permite passar argumentos da linha de comando para
o programa. args é um array de strings que contém os argumentos fornecidos quando o
programa é executado a partir da linha de comando.
49
Os métodos GET e SET
Em Java, os métodos Get e Set são usados para
acessar e modificar os atributos de uma classe.
50
Os métodos GET e SET
51
Os métodos GET e SET
52
Os métodos GET e SET
53
Métodos abstratos
● Métodos abstratos são métodos que são
declarados em uma classe, mas não fornecem
uma implementação.
● Em Java, você declara um método abstrato
usando a palavra-chave abstract.
● Esses métodos precisam ser implementados
pelas classes que herdam da classe que os
declara.
54
Métodos abstratos
55
Interfaces
Uma interface em Java nada mais é que uma classe
abstrata composta somente por métodos abstratos.
Não pode ser instanciada.
56
E para que serve uma interface?
57
Interfaces
Ela serve para que outras classes, baseadas nessa
interface, implementem esses métodos para fins
específicos.
Ela só contém as declarações dos métodos e
constantes, nenhuma implementação, só o 'molde'.
58
Interfaces
Desde o Java 8, você também pode
criar métodos padrão.
59
Interfaces
A interface ao lado contém dois
campos, dois métodos e um método
padrão.
60
Implementando uma interface
Sozinha, uma interface não tem uma finalidade específica, mas
geralmente é usada em conjunto com as Classes
61
Temos, porém, uma regra geral!
62
Regra para classes e interfaces
A classe deve implementar todos os métodos da
Interface. Os métodos devem ter exatamente a
mesma assinatura (nome, parâmetros e exceções)
descrita na interface.
No entanto, a classe não precisa declarar os
atributos, apenas os métodos.
63
Instâncias de uma interface
Ao criar uma Classe do Java, que implementa uma Interface, a
instância do objeto pode ser referenciada como uma instância da
interface.
64
Importante!
Uma interface não pode conter um método construtor.
65
Polimorfismo com interfaces
Você pode usar apenas interfaces para fazer referência a
instâncias de objeto!
66
Polimorfismo com interfaces
Você pode usar apenas interfaces para fazer referência a
instâncias de objeto!
67
Polimorfismo com interfaces
Você pode usar apenas interfaces para fazer referência a
instâncias de objeto!
68
Implementando várias interfaces
Embora na herança dentro das Classes você esteja restrito a
herdar apenas uma classe, com as interfaces, você pode herdar
várias.
69
Implementando várias interfaces
Embora na herança dentro das Classes você esteja restrito a
herdar apenas uma classe, com as interfaces, você pode herdar
várias.
70
Não se esqueça, porém, de implementar
todos os métodos de todas as interfaces
para não gerar um erro de compilação!
71
Métodos padrão das interfaces
● Java 8 fornece os métodos default (padrão)
para as interfaces.
● Um método default pode conter sua própria
implementação diretamente dentro da interface!
● Se uma classe não implementar um método
padrão, o compilador usará a implementação
mencionada na interface.
72
Métodos padrão das interfaces
73
Métodos padrão das interfaces
74
Métodos estáticos nas interfaces
● Os métodos estáticos nas interfaces são quase
idênticos aos métodos estáticos nas classes
concretas.
● A única e grande diferença está no fato de que
os métodos static não são herdados nas
classes que implementam a interface.
75
Métodos estáticos nas interfaces
76
Métodos estáticos nas interfaces
77
Classes Abstratas
● É um tipo de classe especial que não pode ser
instanciada, apenas herdada. Sendo assim, uma classe
abstrata não pode ter um objeto criado a partir de sua
instanciação.
● Essas classes são muito importantes quando não
queremos criar um objeto a partir de uma classe
“geral”, apenas de suas “subclasses”.
78
Classes Abstratas: Exemplo
Imagine que possuímos três classes (Conta, Conta Corrente e
Conta Poupança), sendo a classe Conta uma classe “geral”
(comumente chamada de classe “pai”).
Ao ir em um banco, nós não criamos uma nova Conta, mas sim
uma Conta Corrente ou uma Conta Poupança.
79
Classes Abstratas vs Interfaces
● Quando utilizamos as interfaces, estamos definindo um
conjunto de assinatura de métodos que outras classes
devem implementar. Com isso, apenas definimos o
comportamento base de um conjunto de classes que, por
ventura, implementam esta interface.
80
Classes Abstratas implementação
81
Classes Final
Uma classe final, é uma classe que não permite que
seja criada subclasses dela.
82
Pacotes em java
● Na linguagem Java existe uma maneira simples
e direta de se organizar arquivos, além de
possibilitar que se utilize mais de uma classe de
mesmo nome no mesmo projeto.
● Essa forma de organização recebe o nome de
empacotamento.
● No Java utilizamos a palavra package para
representar o pacote da classe.
83
Pacotes em java
Uma boa prática para nomes de pacotes é utilizar
apenas uma palavra como nome do pacote, por
exemplo, biblioteca, pessoa, email, e o nome do
pacote escrito em minúsculo.
O pacote não pode ter o nome de uma palavra-chave
do java e não pode começar com número ou
caracteres especiais (exceto $ e _).
84
Pacotes importantes do java
java.lang:
Contém classes fundamentais do Java, como Object, String,
Math, e outras classes básicas.
java.util:
Fornece classes e interfaces úteis para estruturas de dados,
como List, Set, Map, além de utilitários para manipulação de
datas, coleções, e outras classes auxiliares.
java.io:
Contém classes para entrada e saída de dados. Trata de
operações com arquivos, streams, e serialização.
85
Pacotes importantes do java
java.math:
Contém classes para manipulação de números grandes
e precisos, além de operações matemáticas avançadas.
java.net:
Oferece classes para comunicação em rede, como
sockets, URLs, e outras funcionalidades relacionadas à
rede.
86