SlideShare uma empresa Scribd logo
Programação OO
Instituto Federal de Goiás
Campus Luziânia
Técnico Em Informática     
ramirovictor3@gmail.com
Programação Orientada a Objetos
• Na POO um projeto de sistema está centrado na
identificação de objetos.
Prof. Ramiro Victor 2
Relações
Prof. Ramiro Victor 3
 Objetos não existem isolados
 São formados por outros objetos
 Objetos usam outros objetos
 Um programa OO possui vários objetos que interagem entre si
 Modelagem define quais objetos usamos em um programa e como
eles se relacionam
Relações entre objetos
Prof. Ramiro Victor 4
 Objetos possuem relacionamentos
 Associação, Composição e Agregação
 Um objeto pode conter outros objetos
 Carro (motor, pneu, porta)
 Dependência
 Objetos podem usar outros objetos
 Trem usa estrada de ferro
 Herança
 Uma subclasse é uma superclasse
 Leão é um animal
Composição
Prof. Ramiro Victor 5
 Um livro contém capítulos
 Capítulo é parte essencial de livro
 Se não existir capítulo, não existe livro
 Capítulo não existe fora de livro
 Linha com losângulo preenchido na classe “dominante”
 Livro é composto de 1 ou mais capítulos
Composição
Prof. Ramiro Victor 6
Os atributos são derivados
dos relacionamentos. Não
existem no diagrama.
Os atributos são derivados
dos relacionamentos. Não
existem no diagrama.
public class Livro {
private Capitulo[] capitulos;
public Livro(int qtdCapitulo){
capitulos = new Capitulo[qtdCapitulo];
}
}
public class Capitulo {
private Livro livro;
/* Definição da Classe Capitulo */
}
Referência pode ou não
ser bidirecional. Capítulo
não precisa ter o atributo
livro
Referência pode ou não
ser bidirecional. Capítulo
não precisa ter o atributo
livro
Agregação
Prof. Ramiro Victor 7
 Carro contém Pneu, Motor e Porta
 Não são partes essenciais do carro
 Retirando as portas um carro continua sendo um carro
 Pneus/Portas existem como objetos independentes
 Linha com losângulo vazio na classe “dominante”
Agregação
Prof. Ramiro Victor 8
public class Carro {
private Motor motor;
private Porta portas[];
private Pneu pneus[];
/* . . . */
}
Pode ser implementado
de mais de uma forma
Pode ser implementado
de mais de uma forma
public class Carro {
private Motor motor;
private Porta portas[];
private Pneu p1, p2, p3,
p4;
/* . . . */
}
public class Motor{
/* . . . */
}
public class Porta{
/* . . . */
}
public class Pneu{
/* . . . */
}
Dependência
Prof. Ramiro Victor 9
 Objetos que usam outros objetos
 Podem ser implementados com passagem de parâmetros
public class Trem {
/* . . . */
public void definirEstrada (EstradaFerro estradaFerro)
{
this.estradaFerro = estradaFerro;
}
}
Observações
Prof. Ramiro Victor 10
 Composição, Agregação e Associação
 Mesma forma de implementar
 Muda apenas o conceito
 Comportamento diferente
 Muito comum usar apenas notação da associação
 Sem o losângulo
 Composição e Agregação são “tipos” de associação
 Representam relacionamentos “tem um”
 Caro “tem uma” roda
 Livro “tem um” capitulo
 Trem “tem uma” estrada de ferro
Orientação a Objetos
Prof. Ramiro Victor 11
Herança
Prof. Ramiro Victor 12
Herança
• Herança é o mecanismo que possibilita a definição
de novas classes a partir de uma já existente, como
forma de reutilizar seus atributos e métodos.
 Para entregar software de qualidade em menos tempo, é
preciso reutilizar;
“copiar e colar” não é reutilizar!
 Reuso é uma das principais vantagens anunciadas pela
Orientação a Objetos
Prof. Ramiro Victor 13
Herança
Prof. Ramiro Victor 14
Herança
Prof. Ramiro Victor 15
 Criação de novas classes estendendo classes existentes;
 Relacionamento “é um [subtipo de]”:
 Um livro é um produto, um administrador é um usuário;
 Uso da palavra-chave extends;
 A palavra-chave é sugestiva – a classe que esta sendo
criada “estende” outra classe:
 Parte do que já existe naquela classe;
 Pode adicionar novos recursos;
 Pode redefinir recursos existentes.
Herança
• O termo extends é utilizado na declaração de uma
classe para especificar quem é sua superclasse.
Caso ele seja omitido, como se fez em todos os
exemplos anteriores, a classe Object será assumida
como a superclasse da nova classe.
Prof. Ramiro Victor 16
Herança
Prof. Ramiro Victor 17
 Sintaxe:
public class subclasse extends superclasse{
}
 Semântica:
 A subclasse herda todos os atributos e métodos que a superclasse
possuir;
 Subclasse é uma derivação, um subtipo, uma extensão da
superclasse.
Herança - exemplo
Prof. Ramiro Victor 18
public class Produto {
private String nome;
private double preco;
public Produto(String nome, double preco) {
this.nome = nome;
this.preco = preco;
}
public boolean ehCaro() {
return (preco > 1000);
}
/* Métodos de acesso ... */
}
Herança
Prof. Ramiro Victor 19
public class Livro extends Produto {
private String autor;
private int paginas;
public Livro(String nome, double preco, String autor, int
paginas) {
super(nome, preco);
this.autor = autor;
this.paginas = paginas;
}
public boolean ehGrande() {
return (paginas > 200);
}
}
Herança
Prof. Ramiro Victor 20
public class Loja {
public static void main(String[] args) {
Livro l;
l = new Livro(“Java“, 74.90, “Fulano", 334);
System.out.println(l.ehCaro());
System.out.println(l.ehGrande());
}
}
Herança
oA referência referência super possibilita que
atributos e métodos da superclasse sejam
referenciados pelos métodos da subclasse.
Prof. Ramiro Victor 21
Herança - exemplo
Prof. Ramiro Victor 22
Herança
Prof. Ramiro Victor 23
Sinônimos
Prof. Ramiro Victor 24
1.Superclasse
2.Classe Base
3.Classe pai/mae
4.Classe ancestral
1.Subclasse
2.Classe Derivada
3.Classe filha
4.Classe descendente

Mais conteúdo relacionado

Mais procurados

Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
Tony Alexander Hild
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
GiovaneGarcia3
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetos
danielrpgj30
 
Virada Tecnológica 2017
Virada Tecnológica 2017Virada Tecnológica 2017
Virada Tecnológica 2017
Orlando Saraiva Júnior
 
Fundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosFundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetos
Evandro Agnes
 
POO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de ClassePOO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de Classe
Felipe J. R. Vieira
 
Orientação a objetos com PHP
Orientação a objetos com PHPOrientação a objetos com PHP
Orientação a objetos com PHP
Leonardo Soares
 
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vbaConceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Wanderlei Silva do Carmo
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
Secretaria de Educação de Goiás
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0
César Augusto Pessôa
 
(Re)pensando a OOP - Flisol Gyn
(Re)pensando a OOP - Flisol Gyn(Re)pensando a OOP - Flisol Gyn
(Re)pensando a OOP - Flisol Gyn
Luís Cobucci
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
Regis Magalhães
 
Construtores em Java
Construtores em JavaConstrutores em Java
Construtores em Java
Ederson Lima
 
Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
José Cléber dos Santos Ferreira
 
Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
Edy Segura
 
PHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e ObjetosPHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e Objetos
George Mendonça
 
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e HerançaJava - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
Moises Omena
 
Linguagem de programação implementação de classes
Linguagem de programação   implementação de classesLinguagem de programação   implementação de classes
Linguagem de programação implementação de classes
Carlos Melo
 
Uma Abordagem Prática de Orientação a Objetos com PHP (FLISOL DF 2011)
Uma Abordagem Prática de Orientação a Objetos com PHP (FLISOL DF 2011)Uma Abordagem Prática de Orientação a Objetos com PHP (FLISOL DF 2011)
Uma Abordagem Prática de Orientação a Objetos com PHP (FLISOL DF 2011)
George Mendonça
 

Mais procurados (19)

Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetos
 
Virada Tecnológica 2017
Virada Tecnológica 2017Virada Tecnológica 2017
Virada Tecnológica 2017
 
Fundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosFundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetos
 
POO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de ClassePOO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de Classe
 
Orientação a objetos com PHP
Orientação a objetos com PHPOrientação a objetos com PHP
Orientação a objetos com PHP
 
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vbaConceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0
 
(Re)pensando a OOP - Flisol Gyn
(Re)pensando a OOP - Flisol Gyn(Re)pensando a OOP - Flisol Gyn
(Re)pensando a OOP - Flisol Gyn
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
 
Construtores em Java
Construtores em JavaConstrutores em Java
Construtores em Java
 
Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
 
Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
 
PHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e ObjetosPHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e Objetos
 
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e HerançaJava - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
 
Linguagem de programação implementação de classes
Linguagem de programação   implementação de classesLinguagem de programação   implementação de classes
Linguagem de programação implementação de classes
 
Uma Abordagem Prática de Orientação a Objetos com PHP (FLISOL DF 2011)
Uma Abordagem Prática de Orientação a Objetos com PHP (FLISOL DF 2011)Uma Abordagem Prática de Orientação a Objetos com PHP (FLISOL DF 2011)
Uma Abordagem Prática de Orientação a Objetos com PHP (FLISOL DF 2011)
 

Semelhante a Programação OO - Java

Paradigma Orientado a Objetos
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
Paradigma Orientado a Objetos
Álvaro Farias Pinheiro
 
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptxAULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AurelcioOliveira
 
Aula orientação a objetos
Aula orientação a objetosAula orientação a objetos
Aula orientação a objetos
Gardênia Santana
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
Igor Takenami
 
Java7
Java7Java7
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1
Filipo Mór
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
Sérgio Souza Costa
 
Progii na02
Progii   na02Progii   na02
Progii na02
Joanna D'Arc
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
Cleyton Ferrari
 
v
vv
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
Juliano Weber
 
SCJA
SCJASCJA
Java aula 2
Java aula 2Java aula 2
Java aula 2
Endel Silva
 
Java Básico :: Orientação a objetos
Java Básico :: Orientação a objetosJava Básico :: Orientação a objetos
Java Básico :: Orientação a objetos
Wesley R. Bezerra
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
Secretaria de Educação de Goiás
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
Sedu
 
Design pattern
Design patternDesign pattern
Design pattern
ricardoalesc
 
Python Orientação a Objeto
Python Orientação a ObjetoPython Orientação a Objeto
Python Orientação a Objeto
antonio sérgio nogueira
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)
Ryan Padilha
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
biandamakengo08
 

Semelhante a Programação OO - Java (20)

Paradigma Orientado a Objetos
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
Paradigma Orientado a Objetos
 
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptxAULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
 
Aula orientação a objetos
Aula orientação a objetosAula orientação a objetos
Aula orientação a objetos
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Java7
Java7Java7
Java7
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
 
Progii na02
Progii   na02Progii   na02
Progii na02
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
v
vv
v
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
SCJA
SCJASCJA
SCJA
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
 
Java Básico :: Orientação a objetos
Java Básico :: Orientação a objetosJava Básico :: Orientação a objetos
Java Básico :: Orientação a objetos
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
Design pattern
Design patternDesign pattern
Design pattern
 
Python Orientação a Objeto
Python Orientação a ObjetoPython Orientação a Objeto
Python Orientação a Objeto
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
 

Último

TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 

Último (6)

TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 

Programação OO - Java

  • 1. Programação OO Instituto Federal de Goiás Campus Luziânia Técnico Em Informática      ramirovictor3@gmail.com
  • 2. Programação Orientada a Objetos • Na POO um projeto de sistema está centrado na identificação de objetos. Prof. Ramiro Victor 2
  • 3. Relações Prof. Ramiro Victor 3  Objetos não existem isolados  São formados por outros objetos  Objetos usam outros objetos  Um programa OO possui vários objetos que interagem entre si  Modelagem define quais objetos usamos em um programa e como eles se relacionam
  • 4. Relações entre objetos Prof. Ramiro Victor 4  Objetos possuem relacionamentos  Associação, Composição e Agregação  Um objeto pode conter outros objetos  Carro (motor, pneu, porta)  Dependência  Objetos podem usar outros objetos  Trem usa estrada de ferro  Herança  Uma subclasse é uma superclasse  Leão é um animal
  • 5. Composição Prof. Ramiro Victor 5  Um livro contém capítulos  Capítulo é parte essencial de livro  Se não existir capítulo, não existe livro  Capítulo não existe fora de livro  Linha com losângulo preenchido na classe “dominante”  Livro é composto de 1 ou mais capítulos
  • 6. Composição Prof. Ramiro Victor 6 Os atributos são derivados dos relacionamentos. Não existem no diagrama. Os atributos são derivados dos relacionamentos. Não existem no diagrama. public class Livro { private Capitulo[] capitulos; public Livro(int qtdCapitulo){ capitulos = new Capitulo[qtdCapitulo]; } } public class Capitulo { private Livro livro; /* Definição da Classe Capitulo */ } Referência pode ou não ser bidirecional. Capítulo não precisa ter o atributo livro Referência pode ou não ser bidirecional. Capítulo não precisa ter o atributo livro
  • 7. Agregação Prof. Ramiro Victor 7  Carro contém Pneu, Motor e Porta  Não são partes essenciais do carro  Retirando as portas um carro continua sendo um carro  Pneus/Portas existem como objetos independentes  Linha com losângulo vazio na classe “dominante”
  • 8. Agregação Prof. Ramiro Victor 8 public class Carro { private Motor motor; private Porta portas[]; private Pneu pneus[]; /* . . . */ } Pode ser implementado de mais de uma forma Pode ser implementado de mais de uma forma public class Carro { private Motor motor; private Porta portas[]; private Pneu p1, p2, p3, p4; /* . . . */ } public class Motor{ /* . . . */ } public class Porta{ /* . . . */ } public class Pneu{ /* . . . */ }
  • 9. Dependência Prof. Ramiro Victor 9  Objetos que usam outros objetos  Podem ser implementados com passagem de parâmetros public class Trem { /* . . . */ public void definirEstrada (EstradaFerro estradaFerro) { this.estradaFerro = estradaFerro; } }
  • 10. Observações Prof. Ramiro Victor 10  Composição, Agregação e Associação  Mesma forma de implementar  Muda apenas o conceito  Comportamento diferente  Muito comum usar apenas notação da associação  Sem o losângulo  Composição e Agregação são “tipos” de associação  Representam relacionamentos “tem um”  Caro “tem uma” roda  Livro “tem um” capitulo  Trem “tem uma” estrada de ferro
  • 11. Orientação a Objetos Prof. Ramiro Victor 11
  • 13. Herança • Herança é o mecanismo que possibilita a definição de novas classes a partir de uma já existente, como forma de reutilizar seus atributos e métodos.  Para entregar software de qualidade em menos tempo, é preciso reutilizar; “copiar e colar” não é reutilizar!  Reuso é uma das principais vantagens anunciadas pela Orientação a Objetos Prof. Ramiro Victor 13
  • 15. Herança Prof. Ramiro Victor 15  Criação de novas classes estendendo classes existentes;  Relacionamento “é um [subtipo de]”:  Um livro é um produto, um administrador é um usuário;  Uso da palavra-chave extends;  A palavra-chave é sugestiva – a classe que esta sendo criada “estende” outra classe:  Parte do que já existe naquela classe;  Pode adicionar novos recursos;  Pode redefinir recursos existentes.
  • 16. Herança • O termo extends é utilizado na declaração de uma classe para especificar quem é sua superclasse. Caso ele seja omitido, como se fez em todos os exemplos anteriores, a classe Object será assumida como a superclasse da nova classe. Prof. Ramiro Victor 16
  • 17. Herança Prof. Ramiro Victor 17  Sintaxe: public class subclasse extends superclasse{ }  Semântica:  A subclasse herda todos os atributos e métodos que a superclasse possuir;  Subclasse é uma derivação, um subtipo, uma extensão da superclasse.
  • 18. Herança - exemplo Prof. Ramiro Victor 18 public class Produto { private String nome; private double preco; public Produto(String nome, double preco) { this.nome = nome; this.preco = preco; } public boolean ehCaro() { return (preco > 1000); } /* Métodos de acesso ... */ }
  • 19. Herança Prof. Ramiro Victor 19 public class Livro extends Produto { private String autor; private int paginas; public Livro(String nome, double preco, String autor, int paginas) { super(nome, preco); this.autor = autor; this.paginas = paginas; } public boolean ehGrande() { return (paginas > 200); } }
  • 20. Herança Prof. Ramiro Victor 20 public class Loja { public static void main(String[] args) { Livro l; l = new Livro(“Java“, 74.90, “Fulano", 334); System.out.println(l.ehCaro()); System.out.println(l.ehGrande()); } }
  • 21. Herança oA referência referência super possibilita que atributos e métodos da superclasse sejam referenciados pelos métodos da subclasse. Prof. Ramiro Victor 21
  • 22. Herança - exemplo Prof. Ramiro Victor 22
  • 24. Sinônimos Prof. Ramiro Victor 24 1.Superclasse 2.Classe Base 3.Classe pai/mae 4.Classe ancestral 1.Subclasse 2.Classe Derivada 3.Classe filha 4.Classe descendente