SlideShare uma empresa Scribd logo
1 de 188
Baixar para ler offline
Prof. Marcello Thiry <marcello.thiry@gmail.com>
PROGRAMAÇÃO ORIENTADA
A OBJETOS
Unidade 1 (parte 2)
3º período
marcello.thiry@gmail.com
2
marcello.thiry@gmail.com
Legenda usada nos slides
3
Conceito-chave: definição fundamental no contexto da Orientação a Objetos (OO).
Importante: informações complementares, mas relevantes para o entendimento
da OO.
Atenção: você deve ficar atento para não cair em armadilhas ou falhas de
entendimento.
marcello.thiry@gmail.com
Você lembra...
4
marcello.thiry@gmail.com
E se criarmos outro objeto...
5
umaPessoa e outraPessoa apontam para o mesmo
objeto?
umaPessoa e outraPessoa têm o mesmo estado?
O que isso significa?
marcello.thiry@gmail.com
O que você pensou?
6
E se fizermos
marcello.thiry@gmail.com
Revisando...
7
 umaPessoa e outraPessoa são objetos diferentes
 Apontam para áreas de memória diferentes
 umaPessoa e outraPessoa podem ter o mesmo estado
num determinado momento
 Duas variáveis com o mesmo valor não são a mesma
variável
marcello.thiry@gmail.com
Como funciona...
8
Endereço Valor
100 ??
101 ??
102 ??
103 ??
104 ??
105 ??
106 ??
... ...
umaPessoa
marcello.thiry@gmail.com
Como funciona...
9
Endereço Valor
100 ??
101 ??
102 ??
103 ??
104 ??
105 ??
106 ??
... ...
umaPessoa
marcello.thiry@gmail.com
Como funciona...
10
Endereço Valor
100 ??
101 ??
102 nome = “”
...
...
103
...
200 ??
201 ??
... ...
umaPessoa
novo objeto
Pessoa
102
marcello.thiry@gmail.com
Como funciona...
11
Endereço Valor
100 102
101 ??
102 nome = “”
...
...
103
...
200 ??
201 ??
... ...
umaPessoa
novo objeto
Pessoa
“Marcello”
marcello.thiry@gmail.com
Como funciona...
12
Endereço Valor
100 102
101 201
102 nome = “Marcello”
...
...
103
...
200 ??
201 nome = “João”
...
...
...
...
umaPessoa
outraPessoa
marcello.thiry@gmail.com
E se...
13
O que você acha que irá acontecer?
Experimente imprimir o nome de umaPessoa
e outraPessoa e analisar o resultado...
marcello.thiry@gmail.com
Vamos colocar a mão na massa!!!
14
 A partir das atividades
anteriores, exercite o que
acabamos de discutir e
tente explicar o resultado
 Depois, altere o nome de
umaPessoa e imprima
novamente:
o que aconteceu?
marcello.thiry@gmail.com
E se tivéssemos algo como...
15
Alguma ideia para implementar esta operação?
marcello.thiry@gmail.com
Aguarde um
pouco mais,
chegaremos
lá...
16
marcello.thiry@gmail.com
Antes, vamos voltar a alguns conceitos-chave...
17
 O que você entende por reutilização?
 Copiar e colar?
 Faz sentido?
 Qual o risco?
 Duplicar código é reutilizar?
marcello.thiry@gmail.com
Como você trabalha reutilização?
18
 Como você trabalha com sub-rotinas?
 Procedimentos
 Funções
 Parâmetros
 E agora, classes e objetos!!!
Lembra da
abstração?
marcello.thiry@gmail.com
Vamos analisar...
19
marcello.thiry@gmail.com
Vamos analisar...
20
Você sentiu
também!?
marcello.thiry@gmail.com
Duplicação de código...
21
marcello.thiry@gmail.com
Ficou melhor?
22
Mas, falta
alguma coisa?
marcello.thiry@gmail.com
Voltando a análise....
23
 Como um Aluno saberá fazer o que uma Pessoa já faz?
 Você já parou para pensar que faz sentido dizer:
 Um Aluno é uma Pessoa
 Legal, mas como iremos fazer isso acontecer?
marcello.thiry@gmail.com
Generalização
24
 Relacionamento que indica Herança
 O sentido do relacionamento é da classe
mais especializada (subclasse) para a
mais genérica (superclasse)
 Aluno é a subclasse (mais especializada)
 Pessoa é a superclasse (mais genérica)
marcello.thiry@gmail.com
Generalização
25
 A subclasse herda todos os atributos e operações da
superclasse
 Cada objeto (instância) da subclasse é também uma
instância indireta da superclasse
 A superclasse tem um nível de abstração maior do que a
subclasse
marcello.thiry@gmail.com
Generalização / Especialização
26
Sentido da
generalização
Sentido da
especialização
marcello.thiry@gmail.com
Níveis de abstração
27
Abstração
mais alta
Abstração
mais baixa
marcello.thiry@gmail.com
Abstração e reusabilidade
28
Maior
reusabilidade
Menor
reusabilidade
marcello.thiry@gmail.com
Generalização em Java
29
marcello.thiry@gmail.com
Generalização em Java
30
marcello.thiry@gmail.com
Hora de reutilizar...
31
Caiu a ficha?
marcello.thiry@gmail.com
O que essa
figura tem a
ver com herança?
32
marcello.thiry@gmail.com
Revendo os tipos de herança
33
 Herança simples
 A subclasse herda suas características e comportamento de
uma única superclasse
 Herança múltipla
 A subclasse herda suas características e comportamento de
duas ou mais superclasses
marcello.thiry@gmail.com
34
A subclasse
(CarroSubmarino)
herda de duas
superclasses
(Carro e Submarino)
marcello.thiry@gmail.com
Herança múltipla em Java
35
 A linguagem Java implementa somente herança simples
 É possível utilizar Interfaces e Composição para simular
parcialmente aspectos da herança múltipla
 Voltaremos a discutir Interfaces e Composição em aulas futuras
 Algumas linguagens OO, como C++ e Common Lisp (CLOS) implementam herança múltipla
marcello.thiry@gmail.com
Considerações sobre herança múltipla
36
 A subclasse precisa ter uma relação “é um” com todas
as suas superclasses
 Deve-se utilizar com cuidado para evitar que o modelo
fique confuso e de difícil manutenção
marcello.thiry@gmail.com
37
“Problema do
diamante”
Você percebe a
ambiguidade?
marcello.thiry@gmail.com
38Linguagens OO que
implementam herança
múltipla devem
fornecer soluções
para mitigar
este problema
marcello.thiry@gmail.com
Você já perguntou sobre...
39
 ... o significado dos modificadores de visibilidade
“–” e “+” nas classes modeladas com UML?
 ... a utilidade dos modificadores de acesso
“private” e “public” em Java?
marcello.thiry@gmail.com
Visibilidade e modificadores de acesso
40
Notação
visual
Modificador
de acesso
A parte é visível...
+ public
dentro da própria classe e para qualquer
outra classe
– private somente dentro da própria classe
# protected
somente dentro do próprio pacote e das
subclasses em outros pacotes
~ package
somente dentro da própria classe e das
classes dentro do mesmo pacote
marcello.thiry@gmail.com
Visibilidade “package” em Java
41
 Para representar a visibilidade “package”, você não deve
especificar um modificador de acesso
 Quando não é especificado um modificador de acesso, o
Java assume que a visibilidade é do tipo “package”
marcello.thiry@gmail.com
Visibilidade “package” em Java
42
 Para cada arquivo “.java” deve haver, pelo menos, uma
classe “public” com o mesmo nome do arquivo
 As demais classes declaradas no mesmo arquivo devem
ser “package”
 Ou seja, não devem especificar um modificador de acesso
marcello.thiry@gmail.com
Visibilidade de atributos e operações
43
Modificador na ClasseAlfa ClasseAlfa ClasseBeta SubAlfa Gama
public S S S S
protected S S S N
sem modificador S S N N
private S N N N
marcello.thiry@gmail.com
Na prática, adotaremos...
44
 As classes serão públicas
 Uma única classe em cada arquivo “.java”
 Logo, o nome da classe e do arquivo deve ser o mesmo
 Atributos serão sempre privados
 Operações podem ser “públicas”, “privadas” ou
“protegidas”
 Exceções devem ser tratadas com parcimônia!!
marcello.thiry@gmail.com
Continuando com a análise...
45
 Imagine que você foi contratado para desenvolver um
sistema acadêmico (matrícula, notas, diários, planos de
ensino) para uma universidade
 Quais as principais entidades envolvidas?
marcello.thiry@gmail.com
Continuando com a análise...
46
 Você pensou primeiro em Pessoa ou em Aluno,
Professor, Funcionário, Turma, Disciplina, etc.?
 Aluno, Professor e Funcionário são entidades do
mundo real que são percebidas pelos usuários
 Não parece fazer sentido criar um objeto Pessoa. Ele
seria genérico demais e sem muita utilidade...
 Você concorda?
marcello.thiry@gmail.com
Continuando com a análise...
47
 Tipicamente, ao analisar os requisitos para desenvolver
um sistema, percebemos primeiro entidades do
domínio de negócio
 Entretanto, muitas vezes, estas entidades possuem
similaridades entre si...
 Lembra do conceito de classe?
marcello.thiry@gmail.com
48
 As similaridades entre as entidades podem ser
abstraídas numa superclasse comum
 Por exemplo, as classes Aluno, Professor e Funcionário
poderiam compartilhar a superclasse Pessoa
 Tente modelar estas classes antes de prosseguir...
Continuando com a análise...
marcello.thiry@gmail.com
49
O que você acha?
Faz sentido, criamos
objetos Pessoa?
Qual a utilidade?
marcello.thiry@gmail.com
Classes Concretas e Abstratas
50
 Classe Concreta é uma classe que pode ser
instanciada diretamente
 Classe Abstrata é uma classe que NÃO pode ser
instanciada diretamente
 No nosso exemplo anterior, como você definiria cada
classe?
marcello.thiry@gmail.com
Classe Abstrata em UML
51
Reparou que o
nome da classe
ficou em itálico?
marcello.thiry@gmail.com
Classe Abstrata em Java
52
A partir de agora, você
não poderá instanciar
objetos Pessoa diretamente!
marcello.thiry@gmail.com
Revisando a classe abstrata
53
 Classe que não terá objetos instanciados
 Quando não faz sentido criar objetos (ex: “Pessoa”)
 Pode ser uma classe completa, incluindo atributos,
operações e métodos
 Oferece a base para uma hierarquia de classes
 Oferece um conjunto de operações e métodos comuns a
todas as subclasses (base para reutilização!!)
marcello.thiry@gmail.com
E se adicionarmos Professor...
54
 Podemos dizer que um Professor é uma Pessoa?
 Claro, mas podemos afirmar também que:
 Um Professor é um Funcionário
marcello.thiry@gmail.com
Professor na hierarquia de herança
55
marcello.thiry@gmail.com
Vamos analisar um pouco mais...
56
Veja o que você
não entendeu e
pergunte...
marcello.thiry@gmail.com
Valor inicial
57
marcello.thiry@gmail.com
?!?!?!?!
58
Não tínhamos
herdado isso
de Funcionario?
marcello.thiry@gmail.com
Redefinição de operações (override)
59
Considere o seguinte:
 Funcionários ganham 3% sobre o valor do
salário bruto a cada triênio
 Professores com Doutorado ganham 10% a
mais sobre o valor calculado do triênio
marcello.thiry@gmail.com
Redefinição de operações (override)
60
Na classe Professor...
e...
marcello.thiry@gmail.com
Redefinição de operações (override)
61
Permite chamar a
implementação (método)
da superclasse
marcello.thiry@gmail.com
A classe Funcionario
62
...
...
marcello.thiry@gmail.com
A classe Funcionario
63
...
... Alguma ideia para
implementar?
Lembra do getIdade()?
marcello.thiry@gmail.com
64
Mas, você não
pensou em
simplesmente
copiar o código,
certo?
Certo!?
marcello.thiry@gmail.com
A classe Professor
65
...
...
marcello.thiry@gmail.com
Redefinição de operações (override)
66
 Uma subclasse pode:
 Adicionar atributos, operações e relacionamentos
 Redefinir operações herdadas (com cuidado!)
 A redefinição (ou overriding) ocorre quando um operação
cuja assinatura já tenha sido especificada recebe um novo
método (ou seja, uma nova implementação) em uma classe
derivada (subclasse)
marcello.thiry@gmail.com
Redefinição de operações (override)
67
 A redefinição deve manter a mesma assinatura da operação
original
marcello.thiry@gmail.com
Abre o olho!!!
68
 Entrar no ambiente Sophia
 Baixar atividade 04
 Ler (antes de perguntar!!) com
atenção as orientações e segui-las
passo a passo
 Depois, vocês irão apresentar os
resultados e discutir suas dúvidas!
marcello.thiry@gmail.com
Restringindo a redefinição em Java
69
 Por default, qualquer operação de uma classe X pode
ser redefinida em quaisquer subclasses de X
 Entretanto, a redefinição de uma operação pode ser evitada
com o uso do modificador “final”
marcello.thiry@gmail.com
Restringindo a redefinição em Java
70
 No nosso exemplo, se a operação getTrienio() da
superclasse Funcionario for declarada como final, você
não poderá redefini-la na subclasse Professor
marcello.thiry@gmail.com
Modificador “final”
71
 Resumindo, quando você utiliza o modificador “final”, a
operação não poderá ser redefinida pelas subclasses
 Mas, este modificador também se aplica a atributos
marcello.thiry@gmail.com
Modificador “final”
72
 O modificador “final” também se aplica a atributos
 Nossa política estabelece que todos os atributos sejam
privados, lembra?
marcello.thiry@gmail.com
Modificador “final”
73
 Mas, quando utilizado em atributos, o modificador
“final” permite a definição de constantes
 Tipicamente, constantes em Java são descritas em caixa alta
marcello.thiry@gmail.com
Constantes em Java
74
 O modificador “final” pode ser usado para definir
constantes em Java
 Mas, Iremos dar preferência para definir constantes
com o tipo enum
 Tipo especial de classe que permite definir uma variável ou
atributo como um conjunto de constantes predefinidas
marcello.thiry@gmail.com
Tipo “enum”
75
 A variável ou atributo deve ser igual a um dos valores
que foram predefinidos para ela
 Uma vez que elas são constantes, os nomes dos
atributos de um enum devem estar em CAIXA ALTA
marcello.thiry@gmail.com
Declarando um tipo “enum”
76
 Você deve utilizar enum sempre que você precisar
representar um conjunto fixo de constantes
marcello.thiry@gmail.com
Como utilizar o tipo “enum”
77
...
...
marcello.thiry@gmail.com
Construtor para o tipo “enum”
78
 O construtor para um tipo enum deve ser privado ou
package
 Este construtor cria automaticamente as constantes que
são definidas no início do corpo enum
 Você não pode invocar diretamente um construtor
enum
marcello.thiry@gmail.com
Tipo “enum”
79
...
marcello.thiry@gmail.com
Tipo “enum”
80
...
marcello.thiry@gmail.com
Como utilizar o tipo “enum”
81
...
...
marcello.thiry@gmail.com
82Rapidinha!
Revise a
implementação
anterior, utilizando
o tipo “enum”
marcello.thiry@gmail.com
Operações abstratas
83
 Nós já vimos o conceito de classe abstrata
 Não é possível instanciar objetos de uma classe abstrata
 Mas, e operações abstratas...
 Alguma ideia?
marcello.thiry@gmail.com
Uma operação abstrata é ...
84
 uma operação que não possui um método
 A implementação da operação (método) é delegada para as
subclasses
 Mas, qual é a vantagem de ter uma operação sem
método?
marcello.thiry@gmail.com
85
Como você
implementaria a
operação
“desenhar()”
 Note que a classe Figura é abstrata (representada em itálico na
UML)
 Da mesma forma, uma operação abstrata também é representada
em itálico na UML
marcello.thiry@gmail.com
86
O que deve ser
desenhado?
Tudo bem, eu não sei
o que desenhar. Mas,
ainda não entendi por
que eu preciso desta
classe?
marcello.thiry@gmail.com
A ideia aqui é garantir
que todas as subclasses
de “Figura” sejam
obrigadas a fornecer
um método para
“desenhar()”
marcello.thiry@gmail.com
marcello.thiry@gmail.com
Classes e operações abstratas
89
 Nem toda classe abstrata precisa ter uma operação
abstrata
 Ex: classe “Pessoa”
 Toda classe que tem, pelo menos, uma operação
abstrata, deve ser abstrata
marcello.thiry@gmail.com
Operações abstratas
são tipicamente
utilizadas com o
princípio de
polimorfismo!
marcello.thiry@gmail.com
91
Poli... o quê????
marcello.thiry@gmail.com
92
Poli=Muitas
Morfhos=Formas
marcello.thiry@gmail.com
Polimorfismo
93
 Princípio pelo qual entidades de tipos diferentes podem
ser acessadas através de uma única interface1
1. http://www.stroustrup.com/glossary.html#Gpolymorphism
marcello.thiry@gmail.com
Polimorfismo
94
 Diferente objetos “Retangulo” e “Circulo” podem ser
acessados através da interface da classe “Figura”
r2
c2
r3
r1
desenhar()
Figura
Programa usuário Executa
“desenhar()”
Executa
“desenhar()”
c1
marcello.thiry@gmail.com
95
“fig” aponta para um
objeto “Retangulo”
“fig” agora aponta
para um objeto “Circulo”
Note que o objeto “fig”
assumiu mais de um tipo
ao longo da execução do
programa
marcello.thiry@gmail.com
96
Este tipo de polimorfismo
é conhecido como
“polimorfismo de inclusão”
O “Polimorfismo de Inclusão” é obtido a partir do relacionamento de
generalização/especialização (herança).
Uma variável declarada como sendo do tipo da superclasse pode então
assumir (referenciar) qualquer objeto que tenha sido criado a partir de
suas subclasses.
marcello.thiry@gmail.com
A variável “fig” está limitada
pela interface da classe
“Figura”. Logo, você só poderá
acessar as operações
disponíveis em “Figura”!!
marcello.thiry@gmail.com
Você entendeu porque a
operação “setAltura”
não foi reconhecida
pelo compilador?
ERRO!
marcello.thiry@gmail.com
E agora...
Compila?
Typecasting
(conversão
de tipo)
O compilador reconhece
a operação porque ela
existe em “Retangulo”
marcello.thiry@gmail.com
Você saberia explicar
o motivo do erro de
compilação?
marcello.thiry@gmail.com
Pronto! Agora
compila, mas...
O erro agora será em
tempo de execução!!
Você entende o porquê?
marcello.thiry@gmail.com
E se...
Agora compila e não
há erro na execução!
Mas, perdemos a transparência
do polimorfismo de inclusão!
marcello.thiry@gmail.com
Ligação1 (biding)
103
 Ligação prematura (early binding) ou ligação estática
(static binding)
 Quando o método a ser invocado é definido durante a
compilação do programa
 Ligação tardia (late binding) ou ligação dinâmica
(dynamic binding)
 Quando o método a ser invocado é definido somente em tempo
de execução do programa
1. Existem autores que utilizam o termo “acomplamento” como tradução de “biding”
marcello.thiry@gmail.com
Ligação tardia
104
 O polimorfismo só pode ser aplicado se a linguagem de
programação orientada a objetos suportar este
mecanismo
 Além de conhecida também como ligação dinâmica, pode
ser ainda denominada ligação em tempo de execução
(runtime biding)
marcello.thiry@gmail.com
Ligação tardia em Java
105
 Em Java, a ligação tardia é o comportamento padrão
 Exceções:
 Métodos “final” não podem ser redefinidos e o
polimorfismo não se aplica
 Métodos “private” são implicitamente declarados como
“final”
marcello.thiry@gmail.com
Vamos trabalhar um pouco...
106
 Entrar no ambiente Sophia
 Baixar atividade 05
 Ler (você já conhece as regras!!)
com atenção as orientações e
segui-las passo a passo
 Depois, vocês irão apresentar os
resultados e discutir suas dúvidas!
marcello.thiry@gmail.com
Existem diferentes tipos de polimorfismo
107
Inclusão
Polimorfismo
Ad-hoc
(aparente)
Coerção
Paramétrico
Sobrecarga (overload)
Universal
(verdadeiro)
(Cardelli e Wegner, 1985) http://lucacardelli.name/papers/onunderstanding.a4.pdf
marcello.thiry@gmail.com
Tipos de polimorfismo
108
 Polimorfismo universal ou verdadeiro
 Quando uma operação ou tipo trabalha uniformemente
para uma gama de tipos definidos na linguagem
 Polimorfismo ad-hoc ou aparente
 Quando uma operação ou tipo parece trabalhar para alguns
tipos diferentes e pode se comportar de formas diferentes
para cada tipo (ex: printf do C)
marcello.thiry@gmail.com
Polimorfismo paramétrico
109
 Classes paramétricas
 Permitem que operações e classes operem sobre dados de
diferentes tipos, sem que elas precisem ser reescritas para
cada um dos tipos desejados
 Uma operação polimórfica tem um parâmetro de tipo
implícito ou explícito, o qual determina o tipo de
argumento para cada aplicação daquela operação
marcello.thiry@gmail.com
110
Template de classe na UML
Objetos desta classe podem ser
declarados para diferentes tipos
(TipoItem) de modo uniforme: o
comportamento será sempre o
mesmo
Parâmetro “Tipo” passado
no momento da declaração
de variáveis “Pilha”
marcello.thiry@gmail.com
111
Template de classe na UML
Parâmetro “Tipo” passado
no momento da declaração
de variáveis “Pilha”
marcello.thiry@gmail.com
...
Em Java, templates são
denominados tipos genéricos:
Generics
marcello.thiry@gmail.com
...
<TipoItem> pode assumir
qualquer tipo, mas o
comportamento será sempre
o de uma Pilha!
marcello.thiry@gmail.com
...
Construtores
Você pode implementar
vários construtores, mas
eles precisam ter
assinaturas diferentes!
marcello.thiry@gmail.com
Chama o construtor
que aceita um “int”
como parâmetro
marcello.thiry@gmail.com
Operador ternário
(condicional)
marcello.thiry@gmail.com
O que é isso?
marcello.thiry@gmail.com
A superclasse java.lang.Object
118
 Base da hierarquia de classes do Java
 Qualquer classe Java é uma subclasse (direta ou indireta) da
classe Object
 Portanto, qualquer classe que você utiliza ou implementa, herda
atributos e operações da classe Object
http://docs.oracle.com/javase/tutorial/java/IandI/objectclass.html
marcello.thiry@gmail.com
A superclasse java.lang.Object
119
 Você pode redefinir (override) os métodos das
operações de Object
 Lembre-se então que qualquer objeto instanciado será
também um objeto Object
Voltaremos a discutir
a classe Object em
aulas futuras
marcello.thiry@gmail.com
Criamos um vetor de objetos genéricos
(qualquer objeto criado a partir de qualquer
classe pode ser colocado neste vetor)
marcello.thiry@gmail.com
Forçamos então uma conversão
(typecasting) para o tipo
passado como parâmetro
marcello.thiry@gmail.com
Tiro
curto!
Complete a
implementação
da classe Pilha,
usando Generics
Teste com uma pilha de Figuras...
marcello.thiry@gmail.com
A classe java.util.ArrayList
123
marcello.thiry@gmail.com
Outras classes paramétricas em Java
124
 java.util.Vector<E>
 http://docs.oracle.com/javase/7/docs/api/java/util/Vector.html
 java.util.HashMap<K,V>
 http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html
 java.util.Stack<E>
 http://docs.oracle.com/javase/7/docs/api/java/util/Stack.html
 ...
marcello.thiry@gmail.com
Sobrecarga (overload)
125
 Permite diferentes versões de uma mesma operação
que aparenta funcionar com diferentes tipos
 Os tipos não precisam possuir estrutura comum
 A assinatura de cada versão da operação deve ser diferente
 As versões das operações não têm relacionamento entre si
 Classificada como polimorfismo ad-hoc (aparente) ou
não verdadeiro
marcello.thiry@gmail.com
Sobrecarga (overload)
126
 Bastante utilizado para construtores
 Permite instanciar um objeto de várias formas
 Oportunidade para diferentes inicializações
 Mas, pode ser utilizado com qualquer operação
 Pode reduzir a legibilidade do código
 Você lembra dos dois construtores que
implementamos para a classe Pilha?
marcello.thiry@gmail.com
127
Outro exemplo...
marcello.thiry@gmail.com
Coerção
128
 Conversão entre tipos diferentes, realizada
automaticamente pelo compilador
marcello.thiry@gmail.com
Coerção
129
 Conversões implícitas do Java:
 byte para short, int, long ou double
 short para int, long, float ou double
 char para int, long, float ou double
 int para long, float ou double
 long para float ou double
 float para double
marcello.thiry@gmail.com
Coerção e Typecasting
130
 Coerção
 Conversão implícita realizada pelo compilador
 Typecasting
 Conversão explícita realizada pelo programador
 (tipo) variável
marcello.thiry@gmail.com
Revendo o conceito de Interface
 Nós já vimos um conceito de Interface
 A interface define o conjunto de operações visíveis
(públicas) de uma classe
 Define quais operações podem ser invocadas nos objetos de uma
determinada classe
 Este conceito também é chamado de “protocolo”
131
marcello.thiry@gmail.com
Revendo o conceito de Interface
132
 Até agora, a interface estava definida na própria classe
 Porém, passaremos a considerar Interface como um
mecanismo a parte
 Uma Interface é uma especificação de comportamento (ou
contrato) que implementadores concordam em
implementar
marcello.thiry@gmail.com
Revendo o conceito de Interface
133
 Uma Interface é similar a uma classe abstrata, onde
todas as operações são também abstratas:
 Não pode ser instanciada, pois não possui implementação
própria
 Funciona como um contrato
 A classe que implementa a Interface deve garantir que todas as
operações da Interface tenham um método (o contrato deve ser
respeitado)
marcello.thiry@gmail.com
134
Transformando Figura em uma Interface
Nos exemplos anteriores, a classe Figura havia sido definida
como uma classe abstrata que tinha apenas a operação
abstrata “desenhar()”
marcello.thiry@gmail.com
Revendo a
implementação
de “Retangulo”
Contrato
aceito
Note que você não
“herda” uma
Interface, mas você
a “implementa”
marcello.thiry@gmail.com
Não seria necessário, pois
não há herança
Mas, a partir do Java 6,
@Override passou a ser
utilizado para indicar
também implementação
marcello.thiry@gmail.com
Notação UML
Circular (lollipop)
Relacionamento
“Realization”
marcello.thiry@gmail.com
Notação UML
Circular (lollipop)
Tradução para
“Realization”: a
Interface é
implementada
pela Classe
marcello.thiry@gmail.com
Note que as classes
“Retangulo” e “Circulo” não
compartilham uma
estrutura comum (elas são
independentes uma da
outra)
marcello.thiry@gmail.com
E você pode ainda aplicar o
polimorfismo de inclusão!!!
marcello.thiry@gmail.com
Notação UML para mostrar
que a classe “Desenho”
utiliza a interface “Figura”
marcello.thiry@gmail.com
Considerações sobre Interfaces
142
 Não têm construtores, uma vez que não podem ser
instanciadas
 Uma mesma interface pode estender uma ou mais
interfaces
 Uma mesma classe pode realizar (implementar) várias
interfaces
marcello.thiry@gmail.com
Considerações sobre Interfaces
143
 Classes que realizam (implementam) uma mesma
interface não precisam compartilhar uma estrutura
comum
 Uma interface especifica, usualmente, uma parte
limitada do comportamento de uma classe
 A realização (implementação) de uma ou mais classes
não exclui a possibilidade de generalização (herança)
marcello.thiry@gmail.com
Considerações sobre Interfaces
144
 Reduz a dependência (acoplamento) entre classes,
aumentando sua reusabilidade
 Oferece uma alternativa simplificada para a
implementação de herança múltipla
marcello.thiry@gmail.com
Exceção (Exception)
145
 É um evento que ocorre durante a execução de um
programa e que interrompe o fluxo normal de
instruções
 Divisão por zero
 Operação matemática inválida
 Tentativa de acesso a uma posição inválida em um vetor
 Tentativa de acesso a um objeto que não foi criado
 etc.
marcello.thiry@gmail.com
Exceções em Java
146
 Quando um erro ocorre dentro de um método, o
próprio método cria um objeto e o entrega para o
ambiente de execução
 Este comportamento é denominado disparar (“throwing”)
uma exceção
 O objeto criado é chamado de objeto de exceção e contem
informação sobre o erro, incluindo seu tipo e o estado do
programa quando o erro ocorreu
http://docs.oracle.com/javase/tutorial/essential/exceptions/
marcello.thiry@gmail.com
Exceções em Java
 Depois que um método dispara (throws) uma exceção,
o ambiente de execução tenta encontrar algum
tratamento para tratá-la
 A sequência de possíveis tratamentos para manipular a
exceção é a pilha dos métodos que foram chamados para
chegar até o método onde o erro ocorreu
147
marcello.thiry@gmail.com
148
main
Método com tratamento de exceção
Método sem tratamento de exceção
Método onde o erro ocorreu
Chama
método
Chama
método
Chama
método
http://docs.oracle.com/javase/tutorial/essential/exceptions/definition.html
marcello.thiry@gmail.com
149
main
Método com tratamento de exceção
Método sem tratamento de exceção
Método onde o erro ocorreu
Dispara (throws)
exceção
Propaga
exceção
Trata (catches)
a exceção
Procura por
tratamento
implementado
Procura por
tratamento
implementado
http://docs.oracle.com/javase/tutorial/essential/exceptions/definition.html
marcello.thiry@gmail.com
150
Java define
3 tipos de
exceção
Checked
Unchecked
Checked Exception
Error
RuntimeException
marcello.thiry@gmail.com
Checked exception
 Condições excepcionais que uma aplicação bem escrita
deveria antecipar
 A aplicação deve implementar ações para se recuperar
destas condições (ex: usuário solicita a abertura de um
arquivo inexistente)
 Portanto, o tratamento de exceções é obrigatório para este
tipo de exceção
151
marcello.thiry@gmail.com
Error (unchecked exception)
 Condições excepcionais que são "externas" a uma
aplicação que não podem ser antecipadas
 Tipicamente, a aplicação não tem como se recuperar destas
condições (ex: uma falha de hardware)
 É possível implementar um tratamento para a exceção
152
marcello.thiry@gmail.com
Runtime exception (unchecked exception)
 Condições excepcionais que são "internas" a uma
aplicação que não podem ser antecipadas
 Tipicamente, a aplicação não tem como se recuperar destas
condições (ex: defeitos de programação)
 É possível implementar um tratamento para a exceção, mas
o correto seria eliminar o defeito que causou a exceção
153
marcello.thiry@gmail.com
Tratamento de exceções
154
 Permite que a execução do programa continue mesmo
após a ocorrência de um erro
 Aumenta a robustez do programa
 Separa o código que define comportamento "normal"
(esperado) do código que realiza tratamento de
exceções
marcello.thiry@gmail.com
try...catch
155
1. O código controlado pela cláusula try é
executado
2. Se ocorrer uma exceção, o controle é
desviado para o código dentro da cláusula
catch
3. Se a exceção ocorrida estiver sendo
considerada pela cláusula catch, o código
de tratamento da exceção é executado
(caso contrário, a exceção é repassada ao
ambiente de execução)
4. Se não ocorrer uma exceção, o tratamento
da exceção (catch) não é executado
marcello.thiry@gmail.com
try...catch
156
 Você pode adicionar quantas cláusulas
catch forem necessárias
 Permite tratamento específico para cada
tipo de exceção considerado
 objExcecao é o objeto de exceção
criado quando a exceção ocorre
 Ele possui várias informações sobre a
exceção
marcello.thiry@gmail.com
try...catch
157
Você pode considerar
mais de uma exceção
em uma mesma
cláusula catch
marcello.thiry@gmail.com
try...finally
1. O código controlado pela cláusula try é
executado
2. Se ocorrer uma exceção, o controle é
desviado para o código dentro da cláusula
finally que é executado
3. Se não ocorrer uma exceção, após o último
comando dentro da cláusula try, o código
dentro da cláusula finally é executado (ou
seja, o código dentro da cláusula finally é
sempre executado)
158
marcello.thiry@gmail.com
Combinando try...catch...finally
159
Este bloco é
executado
mesmo quando uma
exceção ocorrer!!
marcello.thiry@gmail.com
Capturando todos os 3 tipos de exceção
160
marcello.thiry@gmail.com
Capturando todos os 3 tipos de exceção
161
Operação
disponibilizada
pelas classes
de Exceção
marcello.thiry@gmail.com
Conhecendo as classes de exceção
162
 Classe Throwable
 http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html
 Classe Exception
 http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html
 Classe RuntimeException
 http://docs.oracle.com/javase/7/docs/api/java/lang/RuntimeException.html
 Classe Error
 http://docs.oracle.com/javase/7/docs/api/java/lang/Error.html
marcello.thiry@gmail.com
Experimente...
163
marcello.thiry@gmail.com
A cláusula throws
164
 Permite especificar exceções que podem ser disparadas
ou propagadas dentro de um determinado método
 Você pode forçar (disparar) uma exceção dentro de um
método, usando a cláusula throw
 Você pode não desejar tratar a exceção no método atual e
apenas propagá-la para o próximo método
 O próximo método pode tratar a exceção ou continuar
propagando
marcello.thiry@gmail.com
165
Forçando uma Exceção
marcello.thiry@gmail.com
Forçando uma Exceção
Informa ao compilador que o método da operação
“geraExcecao()” deve, obrigatoriamente:
 capturar (catch) a exceção Exception; ou
 disparar (throw) uma exceção Exception
marcello.thiry@gmail.com
167
No exemplo anterior, devemos chamar a
operação de modo seguro...
marcello.thiry@gmail.com
168
Outra opção seria capturarmos a exceção no
próprio método da operação...
marcello.thiry@gmail.com
169
Ou ainda, simplesmente capturar e propagar a
exceção para o próximo método...
marcello.thiry@gmail.com
try-com-recursos (try-with-resources)
170
 Cláusula try (Java 7+) que declara um ou mais recursos
 Um recurso é um objeto que deve ser fechado depois que o
programa não precisar mais dele
 Garante que cada recurso é fechado ao final da cláusula
marcello.thiry@gmail.com
Criando sua própria classe de exceção
 Você pode ainda criar suas próprias exceções
 Verifique se a plataforma Java já não oferece uma exceção
que atenda às suas necessidades
 ... ou alguma exceção já criada por outros programadores e
fornecedores
 Verifique se a nova exceção será realmente útil
 Utilize a palavra Exception ao final do nome da classe criada
(boas práticas de codificação Java)
171
marcello.thiry@gmail.com
172
marcello.thiry@gmail.com
173
Dos “clones”,
você acha
que eu tinha
esquecido?
marcello.thiry@gmail.com
Vamos aprender
a clonar objetos!
Se você não entendeu
este slide, procure pela
ovelha Dolly na web
marcello.thiry@gmail.com
Formas para copiar objetos...
Shallow Copy Deep Copy
Lazy Copy
Precisa ser
agora?!
marcello.thiry@gmail.com
Shallow copy
 Para copiar o objeto A, o objeto B irá copiar todos os
atributos de A
 Se o valor do atributo é um objeto, B copiará o endereço de
memória deste objeto (A e B apontarão para o mesmo
objeto)
 Se o valor do atributo é um tipo primitivo, B copiará o valor
do tipo primitivo
marcello.thiry@gmail.com
Deep copy
 Para copiar o objeto A, o objeto B irá copiar todos os
atributos de A
 Se o valor do atributo é um objeto, B copiará os dados deste
objeto (A e B não compartilharão objetos)
 A contrapartida em relação a uma shallow copy é o desempenho
inferior
 Se o valor do atributo é um tipo primitivo, B copiará o valor
do tipo primitivo
marcello.thiry@gmail.com
Lazy copy
 Combinação das estratégias Shallow e Deep copy
 Inicialmente, objetos são copiados via shallow copy
 Um contador é mantido para conhecer a quantidade de objetos
copiados
 Quando o programa tiver que modificar um objeto, ele
verifica antes se aquele objeto compartilha dados
 Se for o caso, uma deep copy é realizada e um novo objeto é
criado antes dele ser modificado
marcello.thiry@gmail.com
...
...
marcello.thiry@gmail.com
...
...
Implementar a
interface “Cloneable”
Suportar a exceção
“CloneNotSupportedException”
marcello.thiry@gmail.com
...
...
Não esquecer de chamar o
clone() da superclasse:
garantir o efeito cascata
marcello.thiry@gmail.com
...
...
Deep copy
marcello.thiry@gmail.com
...
...
marcello.thiry@gmail.com
...
...
marcello.thiry@gmail.com
Usando a operação “clone”
marcello.thiry@gmail.com
Referências
186
 Grady Booch; Robert A. Maksimchuck; Michael W. Engle; Bobbi
J. Young; Jim Conallen; Kelli A. Houston. Object-oriented analysis
and design with applications. 3rd ed. Addison-Wesley, 2007.
 Ricardo Pereira e Silva. UML 2 em Modelagem Orientada a
Objetos. Visual Books, 2007.
 Paul J. Deitel; Harvey M. Deitel. Java - Como Programar. 8ª ed.,
Prentice Hall, 2010.
 OMG (Object Management Group), OMG Unified Modeling
Language v2.5, 2012.
 http://www.omg.org/spec/UML/2.5/Beta1/PDF/
marcello.thiry@gmail.com
Referências
187
 Luca Cardelli; Peter Wegner. On understanding types, data abstraction and
polymorphism. Computing Surveys, 17(4):471-522, December 1985.
marcello.thiry@gmail.com
marcello.thiry@gmail.com

Mais conteúdo relacionado

Mais procurados

Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro BancoBanco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro BancoLeinylson Fontinele
 
Estrutura de Dados Aula 14 - Técnicas de Pesquisa e Ordenação (conceitos e al...
Estrutura de Dados Aula 14 - Técnicas de Pesquisa e Ordenação (conceitos e al...Estrutura de Dados Aula 14 - Técnicas de Pesquisa e Ordenação (conceitos e al...
Estrutura de Dados Aula 14 - Técnicas de Pesquisa e Ordenação (conceitos e al...Leinylson Fontinele
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoVinícius de Paula
 
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...Marcello Thiry
 
Polimorfismo em java
Polimorfismo em javaPolimorfismo em java
Polimorfismo em javaManoel Afonso
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Leinylson Fontinele
 
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...Leinylson Fontinele
 
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)Leinylson Fontinele
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados ConceitosCleber Ramos
 
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Leinylson Fontinele
 

Mais procurados (20)

Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro BancoBanco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
Estrutura de Dados Aula 14 - Técnicas de Pesquisa e Ordenação (conceitos e al...
Estrutura de Dados Aula 14 - Técnicas de Pesquisa e Ordenação (conceitos e al...Estrutura de Dados Aula 14 - Técnicas de Pesquisa e Ordenação (conceitos e al...
Estrutura de Dados Aula 14 - Técnicas de Pesquisa e Ordenação (conceitos e al...
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de Projeto
 
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
 
Polimorfismo em java
Polimorfismo em javaPolimorfismo em java
Polimorfismo em java
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Diagrama de Classes
Diagrama de ClassesDiagrama de Classes
Diagrama de Classes
 
POO - 06 - Encapsulamento
POO - 06 - EncapsulamentoPOO - 06 - Encapsulamento
POO - 06 - Encapsulamento
 
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
 
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
 
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados Conceitos
 
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
 
Modulo 15 PSI
Modulo 15 PSIModulo 15 PSI
Modulo 15 PSI
 

Semelhante a OO e Herança em Sistema Acadêmico

Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )PeslPinguim
 
07-diagramadeclassesdeanlise-140412133237-phpapp01.pdf
07-diagramadeclassesdeanlise-140412133237-phpapp01.pdf07-diagramadeclassesdeanlise-140412133237-phpapp01.pdf
07-diagramadeclassesdeanlise-140412133237-phpapp01.pdfWendelNeres2
 
07 diagrama de classes de análise
07  diagrama de classes de análise07  diagrama de classes de análise
07 diagrama de classes de análiseFilipe Soares
 
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfAPOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfpedrina4
 
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...Marcello Thiry
 
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)Marcello Thiry
 
Especialização e generalização em java
Especialização e generalização em javaEspecialização e generalização em java
Especialização e generalização em javaDiogo Winck
 
Introdução à programação por objectos final
Introdução à programação por objectos finalIntrodução à programação por objectos final
Introdução à programação por objectos finalemcp11
 
Aula classes abstratas 3º periodo uniao
Aula classes abstratas  3º periodo uniaoAula classes abstratas  3º periodo uniao
Aula classes abstratas 3º periodo uniaoMaria Alice Jovinski
 
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosIES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosRamon Mayor Martins
 
Aula sobre Diagrama Classe para a modelagem de requisitos.pptx
Aula sobre Diagrama Classe para a modelagem de requisitos.pptxAula sobre Diagrama Classe para a modelagem de requisitos.pptx
Aula sobre Diagrama Classe para a modelagem de requisitos.pptxCarlos Albuquerque
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosLeonardo Melo Santos
 
Apresentação versão 1.5
Apresentação   versão 1.5Apresentação   versão 1.5
Apresentação versão 1.5oliveiraprog
 

Semelhante a OO e Herança em Sistema Acadêmico (20)

Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )
 
Aula02
Aula02Aula02
Aula02
 
07-diagramadeclassesdeanlise-140412133237-phpapp01.pdf
07-diagramadeclassesdeanlise-140412133237-phpapp01.pdf07-diagramadeclassesdeanlise-140412133237-phpapp01.pdf
07-diagramadeclassesdeanlise-140412133237-phpapp01.pdf
 
07 diagrama de classes de análise
07  diagrama de classes de análise07  diagrama de classes de análise
07 diagrama de classes de análise
 
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfAPOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
 
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...
 
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
 
Paradigma Orientado a Objetos
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
Paradigma Orientado a Objetos
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
 
Especialização e generalização em java
Especialização e generalização em javaEspecialização e generalização em java
Especialização e generalização em java
 
Sld 4
Sld 4Sld 4
Sld 4
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 
Introdução à programação por objectos final
Introdução à programação por objectos finalIntrodução à programação por objectos final
Introdução à programação por objectos final
 
Aula classes abstratas 3º periodo uniao
Aula classes abstratas  3º periodo uniaoAula classes abstratas  3º periodo uniao
Aula classes abstratas 3º periodo uniao
 
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosIES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
 
Aula sobre Diagrama Classe para a modelagem de requisitos.pptx
Aula sobre Diagrama Classe para a modelagem de requisitos.pptxAula sobre Diagrama Classe para a modelagem de requisitos.pptx
Aula sobre Diagrama Classe para a modelagem de requisitos.pptx
 
Python Orientação a Objeto
Python Orientação a ObjetoPython Orientação a Objeto
Python Orientação a Objeto
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
 
Diagrama classes
Diagrama classesDiagrama classes
Diagrama classes
 
Apresentação versão 1.5
Apresentação   versão 1.5Apresentação   versão 1.5
Apresentação versão 1.5
 

Mais de Marcello Thiry

Expected Monetary Value - EMV (Project Management Series)
Expected Monetary Value - EMV (Project Management Series)Expected Monetary Value - EMV (Project Management Series)
Expected Monetary Value - EMV (Project Management Series)Marcello Thiry
 
Valor Monetário Esperado - VME (Série Gerência de Projetos)
Valor Monetário Esperado - VME (Série Gerência de Projetos)Valor Monetário Esperado - VME (Série Gerência de Projetos)
Valor Monetário Esperado - VME (Série Gerência de Projetos)Marcello Thiry
 
java.io - streams and files
java.io - streams and filesjava.io - streams and files
java.io - streams and filesMarcello Thiry
 
java.io - fluxos (streams) e arquivos
java.io - fluxos (streams) e arquivosjava.io - fluxos (streams) e arquivos
java.io - fluxos (streams) e arquivosMarcello Thiry
 
Princípios da engenharia de software (marcello thiry)
Princípios da engenharia de software (marcello thiry)Princípios da engenharia de software (marcello thiry)
Princípios da engenharia de software (marcello thiry)Marcello Thiry
 
Software engineering principles (marcello thiry)
Software engineering principles (marcello thiry)Software engineering principles (marcello thiry)
Software engineering principles (marcello thiry)Marcello Thiry
 
Software Engineering - Introduction and Motivation (Marcello Thiry)
Software Engineering - Introduction and Motivation (Marcello Thiry)Software Engineering - Introduction and Motivation (Marcello Thiry)
Software Engineering - Introduction and Motivation (Marcello Thiry)Marcello Thiry
 
Engenharia de Software - Introdução e Motivação (Marcello Thiry)
Engenharia de Software - Introdução e Motivação (Marcello Thiry)Engenharia de Software - Introdução e Motivação (Marcello Thiry)
Engenharia de Software - Introdução e Motivação (Marcello Thiry)Marcello Thiry
 
POO - Unidade 2 (parte 3) - Diagrama de Sequência (versão 1)
POO - Unidade 2 (parte 3) - Diagrama de Sequência  (versão 1)POO - Unidade 2 (parte 3) - Diagrama de Sequência  (versão 1)
POO - Unidade 2 (parte 3) - Diagrama de Sequência (versão 1)Marcello Thiry
 
POO - Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)
POO -  Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)POO -  Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)
POO - Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)Marcello Thiry
 

Mais de Marcello Thiry (10)

Expected Monetary Value - EMV (Project Management Series)
Expected Monetary Value - EMV (Project Management Series)Expected Monetary Value - EMV (Project Management Series)
Expected Monetary Value - EMV (Project Management Series)
 
Valor Monetário Esperado - VME (Série Gerência de Projetos)
Valor Monetário Esperado - VME (Série Gerência de Projetos)Valor Monetário Esperado - VME (Série Gerência de Projetos)
Valor Monetário Esperado - VME (Série Gerência de Projetos)
 
java.io - streams and files
java.io - streams and filesjava.io - streams and files
java.io - streams and files
 
java.io - fluxos (streams) e arquivos
java.io - fluxos (streams) e arquivosjava.io - fluxos (streams) e arquivos
java.io - fluxos (streams) e arquivos
 
Princípios da engenharia de software (marcello thiry)
Princípios da engenharia de software (marcello thiry)Princípios da engenharia de software (marcello thiry)
Princípios da engenharia de software (marcello thiry)
 
Software engineering principles (marcello thiry)
Software engineering principles (marcello thiry)Software engineering principles (marcello thiry)
Software engineering principles (marcello thiry)
 
Software Engineering - Introduction and Motivation (Marcello Thiry)
Software Engineering - Introduction and Motivation (Marcello Thiry)Software Engineering - Introduction and Motivation (Marcello Thiry)
Software Engineering - Introduction and Motivation (Marcello Thiry)
 
Engenharia de Software - Introdução e Motivação (Marcello Thiry)
Engenharia de Software - Introdução e Motivação (Marcello Thiry)Engenharia de Software - Introdução e Motivação (Marcello Thiry)
Engenharia de Software - Introdução e Motivação (Marcello Thiry)
 
POO - Unidade 2 (parte 3) - Diagrama de Sequência (versão 1)
POO - Unidade 2 (parte 3) - Diagrama de Sequência  (versão 1)POO - Unidade 2 (parte 3) - Diagrama de Sequência  (versão 1)
POO - Unidade 2 (parte 3) - Diagrama de Sequência (versão 1)
 
POO - Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)
POO -  Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)POO -  Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)
POO - Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)
 

Último

COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESEduardaReis50
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOAulasgravadas3
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFtimaMoreira35
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptMaiteFerreira4
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...licinioBorges
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxBeatrizLittig1
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreCIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreElianeElika
 
VARIEDADES LINGUÍSTICAS - 1. pptx
VARIEDADES        LINGUÍSTICAS - 1. pptxVARIEDADES        LINGUÍSTICAS - 1. pptx
VARIEDADES LINGUÍSTICAS - 1. pptxMarlene Cunhada
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdflucassilva721057
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 

Último (20)

Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdf
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.ppt
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docx
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreCIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
 
VARIEDADES LINGUÍSTICAS - 1. pptx
VARIEDADES        LINGUÍSTICAS - 1. pptxVARIEDADES        LINGUÍSTICAS - 1. pptx
VARIEDADES LINGUÍSTICAS - 1. pptx
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdf
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 

OO e Herança em Sistema Acadêmico