Escolar Documentos
Profissional Documentos
Cultura Documentos
Orientada
a
Objetos
[Conceitos e
Profº Silvio Antonio Carro
silvio@unoeste.br
Fundamentos]
Profº Dione Jonathan Ferrari
dferrari@unoeste.br
Problemas:
•Pequena alteração nos dados leva a
grandes alterações em todo o programa;
Problemas:
Problemas:
• Há dependência entre os módulos
• Alterações em um módulo leva
Evolução dos paradigmas alterações em outros módulos.
“inicio da abstração”
POO
Complexidade
Complexidade
• Decomposição (Modularidade)
• Abstração
• Encapsulamento
• Especialização (Hierarquias)
Por que OO é importante?
Decomposição
“Dividir para conquistar”
• Decomposição sucessiva de problemas em subproblemas de mais
fácil tratamento
Uma boa abstração coloca em destaque apenas os aspectos mais relevantes aos
utilizadores.
Esconde ou protege as classes (coloca os dados e funções sob uma mesma estrutura)
14
O que é Orientação a Objetos?
Paradigma ATUAL
Afeta análise, projeto (design) e programação
Mensagens
Conceitos básicos da tecnologia de objeto
Jogo
Desenhar Jogar
Tela
Solução OO
bloco
bola
Arkanoid
class Pessoa
{
Pessoa String nome;
- Nome ... em Java ... double altura;
- Altura String sexo;
- Sexo double peso;
- Peso int idade;
- Idade }
Classe Pessoa.java
Linguagem Java - Objetos
class Pessoa
Pessoa
{
- Nome String nome;
... em Java ...
- Altura double altura;
- Sexo String sexo;
- Peso double peso;
- Idade int idade;
Classe }
Pessoa.java
...
Pessoa P1;
José P1 = new Pessoa()
... em Java ... P1.nome = “José”;
Altura: 1,80
P1.altura = 1.80;
Peso: 85 P1.peso = 85;
Sexo: Masc P1.sexo = “masc”;
Idade: 36 P1.idade = 36;
...
26
Linguagem Java - Objetos
Pessoa.java
Instanciando um objeto
da classe Pessoa
Pessoa.java
Instanciando um objeto
da classe Pessoa
...
Pessoa P1;
Instanciação do objeto P1 ... P1 = new Pessoa()
P1.nome = “José”;
P1.altura = 1.80;
P1.peso = 85;
P1.sexo = “masc”;
P1.idade = 36;
...
29
Linguagem Java - Objetos
Linguagem Java
Pessoa.java
Instanciando um objeto
da classe Pessoa
Os atributos de um objeto ...
definem o seu estado Pessoa P1;
P1 = new Pessoa()
Variáveis de Instância! P1.nome = “José”;
P1.altura = 1.80;
P1.peso = 85;
O estado de um objeto pode P1.sexo = “masc”;
mudar durante a sua existência P1.idade = 36;
...
30
Linguagem Java - Objetos
Linguagem Java
class Pessoa
Objetos são conceitos que têm {
String nome;
– identidade (a referência) double altura;
String sexo;
– estado (seus atributos) e double peso;
int idade;
– comportamento (seus métodos) }
Andar( ) { ... };
Pessoa.java
Instanciando um objeto
da classe Pessoa
Os métodos implementam os ...
comportamento de um objeto Pessoa P1;
P1 = new Pessoa()
Métodos de Instância P1.nome = “José”;
P1.altura = 1.80;
P1.peso = 85;
“Mensagens são utilizadas para P1.sexo = “masc”;
fazer comunicação entre P1.idade = 36;
objetos e podem mudar o P1.Andar ( );
estado atual do objeto” 31
Linguagem Java - Objetos
Importante
class Pessoa
Pessoa {
- Nome String nome;
- Altura double altura;
- Sexo String sexo;
- Peso double peso;
int idade;
- Idade
Classe
Andar ( ) { ... };
}
Pessoa.java
Funcionario.java
Funcionario
- Nome
- Altura class Funcionario extends Pessoa
{
- Sexo
int cargo;
- Peso double salario;
- Idade
- Cargo CalcularSalario ( ) { ... };
- Salario Promocao ( ) { ... };
}
Classe
Linguagem Java - Polimorfismo
superclasse Pessoa.java
Funcionario.java
...
Pessoa P1; class Funcionario extends Pessoa
{
P1 = new Pessoa()
int cargo;
Funcionario F1 double salario;
F1 = new Funcionario()
P1.Andar ( ); CalcularSalario ( ) { ... };
F1.Andar ( ); Promocao ( ) { ... };
... Andar ( ) { ... };
}
Resumo de termos da POO
• Classe representa um conjunto de objetos com características afins. Uma classe define o comportamento
dos objetos através de seus métodos, e quais estados ele é capaz de manter através de seus atributos.
Exemplo de classe: Os seres humanos.
• Objeto é uma instância de uma classe. Um objeto é capaz de armazenar estados através de seus atributos e
reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos. Exemplo
de objetos da classe Humanos: João, José, Maria.
• Atributos são características de um objeto. Basicamente a estrutura de dados que vai representar a classe.
Exemplos: Funcionário: nome, endereço,telefone, CPF,....; Carro: nome, marca, ano, cor, …; .Por sua vez, os
atributos possuem valores. Por exemplo, o atributo cor pode conter o valor azul. O conjunto de valores dos
atributos de um determinado objeto é chamado de estado.
Resumo de termos da POO
• Métodos definem as habilidades dos objetos. Bidu é uma instância da classe Cachorro, portanto tem habilidade para
latir, implementada através do método deUmLatido. Um método em uma classe é apenas uma definição. A ação só
ocorre quando o método é invocado através do objeto, no caso Bidu. Dentro do programa, a utilização de um método
deve afetar apenas um objeto em particular; Todos os cachorros podem latir, mas você quer que apenas Bidu dê o
latido. Normalmente, uma classe possui diversos métodos, que no caso da classe Cachorro poderiam ser sente, coma e
morda.
• Mensagem é uma chamada a um objeto para invocar um de seus métodos, ativando um comportamento descrito por
sua classe. Também pode ser direcionada diretamente a uma classe (através de uma invocação a um método
estático).
• Herança (ou generalização) é o mecanismo pelo qual uma classe (sub-classe) pode estender outra classe (super-
classe), aproveitando seus comportamentos (métodos) e variáveis possíveis (atributos). Um exemplo de herança:
Mamífero é super-classe de Humano. Ou seja, um Humano é um mamífero. Há Herança múltipla quando uma sub-
classe possui mais de uma super-classe. Essa relação é normalmente chamada de relação "é um“.
Resumo de termos da POO
• Associação é o mecanismo pelo qual um objeto utiliza os recursos de outro. Pode tratar-se de uma
associação simples "usa um" ou de um acoplamento "parte de". Por exemplo: Um humano usa um
telefone. A tecla "1" é parte de um telefone.
• Interface é um contrato entre a classe e o mundo externo. Quando uma classe implementa uma
interface, ela está comprometida a fornecer o comportamento publicado pela interface.