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

Programação OO - Java

  • 1.
    Programação OO Instituto Federalde Goiás Campus Luziânia Técnico Em Informática      ramirovictor3@gmail.com
  • 2.
    Programação Orientada aObjetos • Na POO um projeto de sistema está centrado na identificação de objetos. Prof. Ramiro Victor 2
  • 3.
    Relações Prof. Ramiro Victor3  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 Victor5  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 Victor6 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 Victor7  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 Victor8 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 Victor9  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 Victor10  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.
  • 12.
  • 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
  • 14.
  • 15.
    Herança Prof. Ramiro Victor15  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 termoextends é 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 Victor17  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 Victor19 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 Victor20 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ênciasuper 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
  • 23.
  • 24.
    Sinônimos Prof. Ramiro Victor24 1.Superclasse 2.Classe Base 3.Classe pai/mae 4.Classe ancestral 1.Subclasse 2.Classe Derivada 3.Classe filha 4.Classe descendente