Programação
Orientada a Objetos
com Java
Introdução a POO
Classe e Objeto
Método
Herança
Encapsulamento
Abstração
Polimorfismo
Interface
Coesão / Acoplamento
INTRODUÇÃO
Programação
Orientada a Objetos?
Programação
Orientada a Objetos?
É UM PARADIGMA
DE PROGRAMAÇÃO
Programação
Orientada a Objetos?
UM ESTILO
DE PROGRAMAÇÃO
Programação
Orientada a Objetos?
EXISTEM
OUTRAS
E muito mais... Orientada a Teste, Escalar, Restritiva, Genérica....
Lógico
Prolog – Popler - QLISP
Imperativo/Procedural
Pascal – Fortran - Basic
Funcional/Descritiva
ML – F# - Haskell
Programação
Orientada a Objetos?
• Mais fácil descrever o mundo
real através dos objetos
• O encapsulamento facilita a
manutenção do código
• Maior facilidade para
reutilização de código
• Complexidade no aprendizado
em comparação com a
programação estruturada
• Seus conceitos são de difícil
compreensão
Programação
Orientada a Objetos?
RESUMO
POO é um paradigma de programação que usa "objetos"
compostos por campos e métodos, justamente com suas
interações - para projetar programas de computadores.
http://en.wikipedia.org/wiki/Object-oriented_programming
POO é uma forma especial de programar, mais próximo de
como expressaríamos as coisas na vida real do que outros
tipos de programação.
http://www.criarweb.com/artigos/215.php
POO é organizar o mundo real como uma coleção de objetos
que incorporam estrutura de dados e um conjunto de
operações que manipulam estes dados e trocam mensagens
entre si. http://www.macoratti.net/oo_conc2.htm
CLASSE
Uma classe é uma estrutura que abstrai um conjunto de
objetos com características similares. É como um projeto, a
partir dela que criamos os objetos utilizados em nossos
programas.
http://en.wikipedia.org/wiki/Object-oriented_programming
Classe:
Atributos
Os Atributos em Programação Orientada a Objetos são os
elementos que definem a estrutura de uma classe, ou seja
suas características.
http://en.wikipedia.org/wiki/Object-oriented_programming
Classe:
Construtores
Um construtor é uma estrutura especial da classe, um
método, que tem como objetivo definir a configuração inicial
de uma classe. É utilizado quando existem atributos da classe
que são essenciais para o funcionamento do objeto, porém,
são atributos de instância, e, assim, variam de acordo com
cada objeto.
http://www.webartz.com.br/php/php-orientado-a-objetos-conceitos-construtores-e-
destrutores
Classe:
Destrutores
Semelhante aos construtores, o destrutor também é uma
estrutura, outro método, da classe, porém este é responsável
por limpar a memória ou atributos utilizados na execução da
classe.
http://www.webartz.com.br/php/php-orientado-a-objetos-conceitos-construtores-e-
destrutores
Classe:
Visibilidade
Quem tem acesso à classe tem acesso também a qualquer membro com
visibilidade public, é raro ter atributos públicos, mas é comum ter
métodos públicos.
http://www.dsc.ufcg.edu.br/~jacques/cursos/p2/html/oo/visibilidade.htm
+ Public
O membro private não é acessível fora da classe, a intenção é que apenas
quem escreve a classe possa usar esses membros.
http://www.dsc.ufcg.edu.br/~jacques/cursos/p2/html/oo/visibilidade.htm
- Private
O membro protected é acessível à classe e a suas subclasses, a intenção é
dar acesso aos programadores que estenderão sua classe.
http://www.dsc.ufcg.edu.br/~jacques/cursos/p2/html/oo/visibilidade.htm
# Protected
Classe:
Objeto
Objetos são instâncias de classes. É através deles que (praticamente) todo
o processamento ocorre em sistemas implementados com linguagens de
programação orientadas a objetos.
Programação orientada a objetos uma abordagem com Java.
No paradigma de orientação a objetos, tudo pode ser potencialmente
representado como um objeto. Sob o ponto de vista da programação
orientada a objetos, um objeto não é muito diferente de uma variável
normal.
Programação orientada a objetos uma abordagem com Java.
Objetos
• Estado
• Atributos e Características
• Comportamento
• Ações
Classe
• Tipo base para objetos, um “Molde”
class Classe {
}
objeto = new Classe()
Classe
class Carro {
}
Carro meuCarro = new Carro();
Estrutura da Classe
Classe
Atributos
Métodos
Atributos
class Carro {
String marca;
String cor;
int ano;
int velocidade = 0;
}
Acesso a Atributos
carro.velocidade = 1;
int velocidade = carro.velocidade;
MÉTODO
Um método é uma subrotina que é executada por um objeto
ao receber uma mensagem. Os métodos determinam o
comportamento dos objetos de uma classe.
http://en.wikipedia.org/wiki/Object-oriented_programming
Métodos
class Carro {
void acelerar() {
velocidade++;
}
}
Método:
Assinatura
Cada método é especificado por uma assinatura, composta
por um identificador para o método (o nome do método), o
tipo para o valor de retorno e sua lista de argumentos, sendo
cada argumento identificado por seu tipo e nome.
Programação orientada a objetos uma abordagem com Java.
[modificador] tipo nome (argumentos)
{
corpo do método
}
Através do mecanismo de sobrecarga (overloading), dois
métodos de uma classe podem ter o mesmo nome, desde
que suas assinaturas de argumentos sejam diferentes.
Programação orientada a objetos uma abordagem com Java.
Método:
Sobrecarga
São métodos que tem o mesmo nome, mas com
argumentos diferentes.
http://www.devmedia.com.br/post-5124-Orientacao-a-objetos-parte-ll.html
Lista de Argumentos diferentes
Podem alterar o tipo de retorno
Podem alterar o modificador de acesso
Declarar exceções novas ou mais abrangentes
Características
Método:
Mensagens
Um programa orientado a objetos é composto por um
conjunto de objetos que interagem através de “trocas de
mensagens”. Na prática, essa troca de mensagem traduz-se
na aplicação de métodos a objetos.
Programação orientada a objetos uma abordagem com Java.
Método:
Estáticos
Usualmente, métodos definidos em uma classe são aplicados
a objetos daquela classe. Há no entanto situações nas quais
um método pode fazer uso dos recursos de uma classe para
realizar sua tarefa sem necessariamente estar associado a um
objeto individualmente.
Programação orientada a objetos uma abordagem com Java.
Para lidar com tais situações, define os métodos da classe,
cuja declaração deve conter o modificador static. Um método
estático pode ser aplicado à classe e não necessariamente a
um objeto.
Programação orientada a objetos uma abordagem com Java.
HERANÇA
Herança é um mecanismo que permite que características
comuns a diversas classes sejam fatoradas em uma classe
base, ou superclasse. A partir de uma classe base, outras
classes podem ser especificadas.
Programação orientada a objetos uma abordagem com Java.
Herança:
Sobreposição
A sobreposição refere-se à redefinição de métodos na hierarquia
da herança, de forma que estes métodos implementam
definições diferentes (mais especializadas) nos subtipos.
http://arquiteturaemobilidade.blogspot.com/2008/07/conceitos-da-orientao-objetos-
com-uml_08.html
Herança
class Carro
extends Veiculo, MeioDeTransporte {
}
Herança Múltipla Não Existe
ENCAPSULAMENTO
É o princípio pelo qual cada componente de um programa
deve agregar toda a informação relevante para sua
manipulação como uma unidade (uma cápsula). Aliado ao
conceito de ocultamento de informação.
Programação orientada a objetos uma abordagem com Java.
Encapsulamento
public class Carro {
int velocidade = 0;
}
meuCarro.velocidade = 1000000000;
meuCarro.velocidade = -7;
Métodos de Acesso
• Padrão Java Bean
– Getters, para recuperar valores
– Setters, para definir ou alterar valores
Getter e Setter
public class Carro {
int velocidade = 0;
void setVelocidade(int velocidade) {
this.velocidade = velocidade;
}
int getVelocidade() {
return velocidade;
}
}
Modificadores de Acesso
public class Carro {
private int velocidade = 0;
public void setVelocidade(int velocidade) {
this.velocidade = velocidade;
}
public int getVelocidade() {
return velocidade;
}
}
Modificadores de Acesso
public class Carro {
private int velocidade = 0;
public void setVelocidade(int velocidade) {
if (velocidade >= 0 && velocidade < 160)
this.velocidade = velocidade;
}
}
ABSTRAÇÃO
Abstração é o processo de extrair as características essenciais de um
objeto real. A abstração é necessária para se ter um modelo fiel da
realidade sobre a qual se possa operar.
http://www.slideshare.net/danielrpgj30/curso-de-programao-orientada-a-objetos
O conjunto de características resultante da abstração forma um tipo de
dado abstrato com informações sobre seu estado e comportamento.
http://www.slideshare.net/danielrpgj30/curso-de-programao-orientada-a-objetos
POLIMORFISMO
O polimorfismo permite que referências de tipos de classes
mais abstratas representem o comportamento das classes
concretas que referenciam. Assim, um mesmo método pode
apresentar várias formas, de acordo com o seu contexto.
http://www.slideshare.net/danielrpgj30/curso-de-programao-orientada-a-objetos
Polimorfismo
• A capacidade de um mesmo objeto de se
apresentar de várias formas
Papagaio papagaio = new Papagaio();
Voador bichoQueVoa = papagaio;
Falador bichoQueFala = new Papagaio();
Polimorfismo
• Um tipo mais específico sempre pode ser
atribuído a uma variável de tipo mais
genérico, nunca o contrário.
Voador bichoQueVoa = papagaio;
Papagaio papagaio = bichoQueVoa;
Polimorfismo
• Força uma “conversão”
• Não afeta o objeto
• Pode resultar em erro se não for do
mesmo tipo
Papagaio papagaio = (Papagaio) bichoQueVoa;
Cast
Polimorfismo
Verificando o Tipo
if (bichoQueVoa instanceof Papagaio) {
System.out.println("Sim, é um papagaio!");
} else {
System.out.println("Não é um papagaio!");
}
INTERFACE
É um conjunto de métodos que um objeto deve suportar, mas
contendo apenas a especificação da funcionalidade que uma
classe deve conter, sem determinar como essa funcionalidade
deve ser implementadas.
Programação orientada a objetos uma abordagem com Java.
Interfaces
• Contrato de comportamento
• Todos os métodos abstratos
• É uma classe 100% abstrata
Ao resgate!
Interfaces
interface Veiculo {
void acelerar();
void frear();
}
Declarando
Interfaces
interface Veiculo {
void acelerar();
void frear();
}
public Carro implements Veiculo {
public void acelerar() { }
public void frear() { }
}
Implementando
Interfaces
interface Voador {
void voar();
}
interface Corredor {
void correr();
}
interface Falador {
void falar();
}
Interfaces
class Papagaio implements Voador, Falador {
public void voar() { }
public void falar() {
System.out.printlmn("Loro!");
}
}
class Cachorro implements Corredor, Falador {
public void correr() { }
public void falar() {
System.out.println("Au! Au!");
}
}
Implementando várias Interfaces
COESÃO / ACOPLAMENTO
Acoplamento é o grau que uma classe depende, interage com outra classe.
Coesão refere a finalidade que a classe foi criada.
http://www.devmedia.com.br/post-5124-Orientacao-a-objetos-parte-ll.html
Quanto menos uma classe depende da outra, menor o acoplamento, e maior a
especialização dela, isso significa alta coesão.
http://www.devmedia.com.br/post-5124-Orientacao-a-objetos-parte-ll.html
Acoplamento
É a interdependência entre as classes
Coesão
Envolve a divisão de responsabilidades entre as
classes
Acoplamento e Coesão
• Acoplamento forte, baixa coesão
– Ruim
• Acoplamento fraco, alta coesão
– Bom

Aula orientação a objetos

  • 1.
  • 2.
    Introdução a POO Classee Objeto Método Herança Encapsulamento Abstração Polimorfismo Interface Coesão / Acoplamento
  • 3.
  • 4.
  • 5.
    Programação Orientada a Objetos? ÉUM PARADIGMA DE PROGRAMAÇÃO
  • 6.
  • 7.
    Programação Orientada a Objetos? EXISTEM OUTRAS Emuito mais... Orientada a Teste, Escalar, Restritiva, Genérica.... Lógico Prolog – Popler - QLISP Imperativo/Procedural Pascal – Fortran - Basic Funcional/Descritiva ML – F# - Haskell
  • 8.
    Programação Orientada a Objetos? •Mais fácil descrever o mundo real através dos objetos • O encapsulamento facilita a manutenção do código • Maior facilidade para reutilização de código • Complexidade no aprendizado em comparação com a programação estruturada • Seus conceitos são de difícil compreensão
  • 9.
    Programação Orientada a Objetos? RESUMO POOé um paradigma de programação que usa "objetos" compostos por campos e métodos, justamente com suas interações - para projetar programas de computadores. http://en.wikipedia.org/wiki/Object-oriented_programming POO é uma forma especial de programar, mais próximo de como expressaríamos as coisas na vida real do que outros tipos de programação. http://www.criarweb.com/artigos/215.php POO é organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam estes dados e trocam mensagens entre si. http://www.macoratti.net/oo_conc2.htm
  • 10.
    CLASSE Uma classe éuma estrutura que abstrai um conjunto de objetos com características similares. É como um projeto, a partir dela que criamos os objetos utilizados em nossos programas. http://en.wikipedia.org/wiki/Object-oriented_programming
  • 11.
    Classe: Atributos Os Atributos emProgramação Orientada a Objetos são os elementos que definem a estrutura de uma classe, ou seja suas características. http://en.wikipedia.org/wiki/Object-oriented_programming
  • 12.
    Classe: Construtores Um construtor éuma estrutura especial da classe, um método, que tem como objetivo definir a configuração inicial de uma classe. É utilizado quando existem atributos da classe que são essenciais para o funcionamento do objeto, porém, são atributos de instância, e, assim, variam de acordo com cada objeto. http://www.webartz.com.br/php/php-orientado-a-objetos-conceitos-construtores-e- destrutores
  • 13.
    Classe: Destrutores Semelhante aos construtores,o destrutor também é uma estrutura, outro método, da classe, porém este é responsável por limpar a memória ou atributos utilizados na execução da classe. http://www.webartz.com.br/php/php-orientado-a-objetos-conceitos-construtores-e- destrutores
  • 14.
    Classe: Visibilidade Quem tem acessoà classe tem acesso também a qualquer membro com visibilidade public, é raro ter atributos públicos, mas é comum ter métodos públicos. http://www.dsc.ufcg.edu.br/~jacques/cursos/p2/html/oo/visibilidade.htm + Public O membro private não é acessível fora da classe, a intenção é que apenas quem escreve a classe possa usar esses membros. http://www.dsc.ufcg.edu.br/~jacques/cursos/p2/html/oo/visibilidade.htm - Private O membro protected é acessível à classe e a suas subclasses, a intenção é dar acesso aos programadores que estenderão sua classe. http://www.dsc.ufcg.edu.br/~jacques/cursos/p2/html/oo/visibilidade.htm # Protected
  • 15.
    Classe: Objeto Objetos são instânciasde classes. É através deles que (praticamente) todo o processamento ocorre em sistemas implementados com linguagens de programação orientadas a objetos. Programação orientada a objetos uma abordagem com Java. No paradigma de orientação a objetos, tudo pode ser potencialmente representado como um objeto. Sob o ponto de vista da programação orientada a objetos, um objeto não é muito diferente de uma variável normal. Programação orientada a objetos uma abordagem com Java.
  • 16.
    Objetos • Estado • Atributose Características • Comportamento • Ações
  • 17.
    Classe • Tipo basepara objetos, um “Molde” class Classe { } objeto = new Classe()
  • 18.
    Classe class Carro { } CarromeuCarro = new Carro();
  • 19.
  • 20.
    Atributos class Carro { Stringmarca; String cor; int ano; int velocidade = 0; }
  • 21.
    Acesso a Atributos carro.velocidade= 1; int velocidade = carro.velocidade;
  • 22.
    MÉTODO Um método éuma subrotina que é executada por um objeto ao receber uma mensagem. Os métodos determinam o comportamento dos objetos de uma classe. http://en.wikipedia.org/wiki/Object-oriented_programming
  • 23.
    Métodos class Carro { voidacelerar() { velocidade++; } }
  • 24.
    Método: Assinatura Cada método éespecificado por uma assinatura, composta por um identificador para o método (o nome do método), o tipo para o valor de retorno e sua lista de argumentos, sendo cada argumento identificado por seu tipo e nome. Programação orientada a objetos uma abordagem com Java. [modificador] tipo nome (argumentos) { corpo do método } Através do mecanismo de sobrecarga (overloading), dois métodos de uma classe podem ter o mesmo nome, desde que suas assinaturas de argumentos sejam diferentes. Programação orientada a objetos uma abordagem com Java.
  • 25.
    Método: Sobrecarga São métodos quetem o mesmo nome, mas com argumentos diferentes. http://www.devmedia.com.br/post-5124-Orientacao-a-objetos-parte-ll.html Lista de Argumentos diferentes Podem alterar o tipo de retorno Podem alterar o modificador de acesso Declarar exceções novas ou mais abrangentes Características
  • 26.
    Método: Mensagens Um programa orientadoa objetos é composto por um conjunto de objetos que interagem através de “trocas de mensagens”. Na prática, essa troca de mensagem traduz-se na aplicação de métodos a objetos. Programação orientada a objetos uma abordagem com Java.
  • 27.
    Método: Estáticos Usualmente, métodos definidosem uma classe são aplicados a objetos daquela classe. Há no entanto situações nas quais um método pode fazer uso dos recursos de uma classe para realizar sua tarefa sem necessariamente estar associado a um objeto individualmente. Programação orientada a objetos uma abordagem com Java. Para lidar com tais situações, define os métodos da classe, cuja declaração deve conter o modificador static. Um método estático pode ser aplicado à classe e não necessariamente a um objeto. Programação orientada a objetos uma abordagem com Java.
  • 28.
    HERANÇA Herança é ummecanismo que permite que características comuns a diversas classes sejam fatoradas em uma classe base, ou superclasse. A partir de uma classe base, outras classes podem ser especificadas. Programação orientada a objetos uma abordagem com Java.
  • 29.
    Herança: Sobreposição A sobreposição refere-seà redefinição de métodos na hierarquia da herança, de forma que estes métodos implementam definições diferentes (mais especializadas) nos subtipos. http://arquiteturaemobilidade.blogspot.com/2008/07/conceitos-da-orientao-objetos- com-uml_08.html
  • 30.
    Herança class Carro extends Veiculo,MeioDeTransporte { } Herança Múltipla Não Existe
  • 31.
    ENCAPSULAMENTO É o princípiopelo qual cada componente de um programa deve agregar toda a informação relevante para sua manipulação como uma unidade (uma cápsula). Aliado ao conceito de ocultamento de informação. Programação orientada a objetos uma abordagem com Java.
  • 32.
    Encapsulamento public class Carro{ int velocidade = 0; } meuCarro.velocidade = 1000000000; meuCarro.velocidade = -7;
  • 33.
    Métodos de Acesso •Padrão Java Bean – Getters, para recuperar valores – Setters, para definir ou alterar valores
  • 34.
    Getter e Setter publicclass Carro { int velocidade = 0; void setVelocidade(int velocidade) { this.velocidade = velocidade; } int getVelocidade() { return velocidade; } }
  • 35.
    Modificadores de Acesso publicclass Carro { private int velocidade = 0; public void setVelocidade(int velocidade) { this.velocidade = velocidade; } public int getVelocidade() { return velocidade; } }
  • 36.
    Modificadores de Acesso publicclass Carro { private int velocidade = 0; public void setVelocidade(int velocidade) { if (velocidade >= 0 && velocidade < 160) this.velocidade = velocidade; } }
  • 37.
    ABSTRAÇÃO Abstração é oprocesso de extrair as características essenciais de um objeto real. A abstração é necessária para se ter um modelo fiel da realidade sobre a qual se possa operar. http://www.slideshare.net/danielrpgj30/curso-de-programao-orientada-a-objetos O conjunto de características resultante da abstração forma um tipo de dado abstrato com informações sobre seu estado e comportamento. http://www.slideshare.net/danielrpgj30/curso-de-programao-orientada-a-objetos
  • 38.
    POLIMORFISMO O polimorfismo permiteque referências de tipos de classes mais abstratas representem o comportamento das classes concretas que referenciam. Assim, um mesmo método pode apresentar várias formas, de acordo com o seu contexto. http://www.slideshare.net/danielrpgj30/curso-de-programao-orientada-a-objetos
  • 39.
    Polimorfismo • A capacidadede um mesmo objeto de se apresentar de várias formas Papagaio papagaio = new Papagaio(); Voador bichoQueVoa = papagaio; Falador bichoQueFala = new Papagaio();
  • 40.
    Polimorfismo • Um tipomais específico sempre pode ser atribuído a uma variável de tipo mais genérico, nunca o contrário. Voador bichoQueVoa = papagaio; Papagaio papagaio = bichoQueVoa;
  • 41.
    Polimorfismo • Força uma“conversão” • Não afeta o objeto • Pode resultar em erro se não for do mesmo tipo Papagaio papagaio = (Papagaio) bichoQueVoa; Cast
  • 42.
    Polimorfismo Verificando o Tipo if(bichoQueVoa instanceof Papagaio) { System.out.println("Sim, é um papagaio!"); } else { System.out.println("Não é um papagaio!"); }
  • 43.
    INTERFACE É um conjuntode métodos que um objeto deve suportar, mas contendo apenas a especificação da funcionalidade que uma classe deve conter, sem determinar como essa funcionalidade deve ser implementadas. Programação orientada a objetos uma abordagem com Java.
  • 44.
    Interfaces • Contrato decomportamento • Todos os métodos abstratos • É uma classe 100% abstrata Ao resgate!
  • 45.
    Interfaces interface Veiculo { voidacelerar(); void frear(); } Declarando
  • 46.
    Interfaces interface Veiculo { voidacelerar(); void frear(); } public Carro implements Veiculo { public void acelerar() { } public void frear() { } } Implementando
  • 47.
    Interfaces interface Voador { voidvoar(); } interface Corredor { void correr(); } interface Falador { void falar(); }
  • 48.
    Interfaces class Papagaio implementsVoador, Falador { public void voar() { } public void falar() { System.out.printlmn("Loro!"); } } class Cachorro implements Corredor, Falador { public void correr() { } public void falar() { System.out.println("Au! Au!"); } } Implementando várias Interfaces
  • 49.
    COESÃO / ACOPLAMENTO Acoplamentoé o grau que uma classe depende, interage com outra classe. Coesão refere a finalidade que a classe foi criada. http://www.devmedia.com.br/post-5124-Orientacao-a-objetos-parte-ll.html Quanto menos uma classe depende da outra, menor o acoplamento, e maior a especialização dela, isso significa alta coesão. http://www.devmedia.com.br/post-5124-Orientacao-a-objetos-parte-ll.html
  • 50.
  • 51.
    Coesão Envolve a divisãode responsabilidades entre as classes
  • 52.
    Acoplamento e Coesão •Acoplamento forte, baixa coesão – Ruim • Acoplamento fraco, alta coesão – Bom