- nome
- salario
Professor:
- titulacao
- departamento
ProfessorAssistente:
- herda de Assistant e Professor
Crie objetos de cada classe e imprima seus atributos.
2. Conceitos
Definição: o termo orientação a objetos significa
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.
3. Conceitos
Projeto OO é ó método que produz arquiteturas de
software baseadas nos objetos que o sistema
manipula;
A propriedade básica do método:
◦ Evite perguntar: O que o sistema faz?
◦ Melhor perguntar: Sobre o que o sistema faz o que?
Olhar primeiro para o dado é a regra que favorece a
reusabilidade;
Descrição de objetos deve ser: completa, precisa, não
ambígüa e independente de representação física.
4. Conceitos
O comportamento dos objetos é definido pelo seu
Tipo Abstrato de Dados (TAD);
A descrição de um TAD deve compreender:
◦ Interface do TAD;
◦ Comportamento do TAD;
Um tipo abstrato de dados é uma classe de
estrutura de dados descrita por uma interface
externa:
◦ Lista de serviços disponíveis;
◦ Propriedades destes serviços.
5. Conceitos
A representação das estruturas de dados do TAD
fica completamente encapsulada;
A representação das estruturas de dados do TAD
não faz parte de sua definição;
O adjetivo abstrato de um tipo abstrato de dados
enfatiza o fato de as estruturas de dados que
representam o tipo não fazerem parte da definição,
isto é, da interface do tipo.
6. Classes
Classe é um conceito de software que descreve a
implementação de um TAD;
Uma classe define:
◦ A estrutura de dados que representa o TAD;
◦ A implementação das operações, métodos, sobre esta
estrutura;
◦ Uma interface explícita;
Classe é apenas um molde para criação de TAD;
Uma classe é a representação de um conjunto de
objetos que compartilham os mesmos atributos,
operações, relacionamentos e semântica.
7. Classes
Exemplo de classe em C++
#include<iostream> //biblioteca
using namespace std;
class Pessoa {
private:
float peso,altura; //variável
char sexo;
string nome;
public:
Pessoa(){ //cria o construtor objeto
}
void setNome(string n,float p,float a,char s)
{ //recebe o valor do int main
nome = n;
peso = p;
altura = a;
sexo = s;
}
string getNome(){
return nome;
}
void print(){ //mostra o valor na tela
cout << "-------------n";
cout << "Nome: " << nome << endl;
cout << "sexo: " << sexo << endl;
cout << "Peso: " << peso << endl;
cout << "Altura: " << altura << endl;
}
};
8. Classes
Classes suportam os conceitos de:
◦ Encapsulamento
◦ Herança
◦ Abstração
◦ Proteção de dados;
◦ Polimorfismo;
◦ Hierarquia.
9. Abstração
Focalizar o essencial, ignorar propriedades acidentais
A abstração deve ser sempre feita com algum objetivo,
porque este determina o que é e o que não é importante.
10. Abstração
Técnica para lidar com a complexidade de um problema.
Destaca os aspectos importantes do objeto real abstraído,
segundo perspectiva do observador.
Ignora os detalhes não relevantes para o observador.
Exemplos de uso da abstração no dia a dia:
11. Abstração - Exemplos
Dirigir um carro.
Usar um tocador de DVD ou outro dispositivo eletrônico.
Tomar um vôo num aeroporto.
Retirar dinheiro num caixa eletrônico.
12. Abstração (Exemplo)
Quem usa as funções sqrt, pow, etc, da classe Math, interessa-se
por:
◦ Saber quantos são os parâmetros para as funções chamadas e em
que ordem são passados
◦ Saber quais os tipos dos parâmetros
◦ Saber os tipos dos dados que as funções retornam
◦ Saber o significado desse dado retornado
13. Conceitos OO
Classes
Abstração é correlacionada aos objetivos de quem se
abstrai;
A abstração do TAD Pessoa depende de seu uso no sistema;
◦ Pessoa sob a perspectiva de um médico:
Pessoa sob a perspectiva de cadastro de dados:
14. Conceitos OO
Classes
Encapsular consiste em incluir, proteger em uma
cápsula, classe;
Encapsular é ocultar do usuário o funcionamento
interno de uma classe.
15. Encapsulamento
Capacidade de esconder aspectos internos do projeto.
Quem utilizará o método não precisa saber como ele funciona e sim
apenas os seus atributos.
16. Encapsulamento
Encapsular é ocultar do usuário o funcionamento interno de
uma classe.
O acesso aos serviços oferecidos é feito via interface,
independentemente do funcionamento interno de uma
classe;
17. Encapsulamento
Não podemos acessar os dados de um objeto diretamente.
(Fenômeno da caixa preta)
Para acessar suas variáveis de instância, devemos fazer através de
métodos.
Não precisamos saber como as variáveis de instância são
armazenadas para poder utilizá-las.
Considere o seguinte trecho de código:
double d = 0;
d += 2.5;
19. Proteção de dados
Proteção de dados visa garantir o acesso apenas sobre operações e atributos
disponibilizados pela interface da classe;
Modificadores de acesso:
◦ Acesso público;
◦ Public: Uma classe declarada como pública dá as outras classes, de todos os
pacotes, acesso aos seus membros que forem públicos também
◦ Acesso protegido;
◦ Protected: Quando um membro da classe é declarado assim, ele se torna
acessível por classes através de herança.
◦ Acesso privado:
◦ Private: O membro da classe não pode ser acessado por nenhuma outra
classe;
20. Proteção de dados
Todos os atributos e operações de uma classe podem ser acessados
pelas operações da mesma classe;
O acesso aos atributos é, em geral, privado ou protegido;
O acesso às operações que fazem parte da interface da classe é público.
22. Atributo
Um atributo é uma propriedade de uma classe que descreve um
conjunto de valores que as instâncias da classe, objetos, podem atribuir
a essa propriedade;
Representa uma propriedade persistida, em geral;
Uma classe pode ter um número qualquer de atributos, inclusive zero.
23. Objetos
Objetos são conceitos de software que modelam entidades
da aplicação;
Objetos são abstrações de dados;
Objetos tem estado (estrutura interna);
Objetos são manipulados só pelas operações;
Objetos são instâncias de classes;
Recordando:
◦ Uma classe é a representação de um conjunto de objetos que
compartilham os mesmos atributos, operações, relacionamentos e
semântica.
24. Construtor
Construtor é um método chamado assim que uma
nova instância do objeto for criada.
Existem, em geral, para assegurar que um objeto seja inicializado de
forma correta.
Exemplo: Data
25. Destrutor
Destrutores são métodos invocados quando um objeto está para
``morrer''.
Liberação de recursos
Evita o vazamento de memória.
26. Exercício
Implemente a classe pessoa
A classe pessoa possui:
◦ 1 atributo chamado nome, , do tipo String
◦ 1 método que atribui valor ao nome
◦ 1 método que lê o valor armazenado em nome
Seu programa deve ser capaz de:
◦ Ler do teclado o nome da pessoa.
◦ Armazenar o nome da pessoa no atributo nome
◦ Imprimir o nome da pessoa.
Seu programa deve possuir um construtor que inicializa os atributos da
classe pessoa toda vez que ela é instanciada.
27. Herança
É o processo em que um
objeto pode adquirir as
características de outro
objeto.
Herança Simples: um
objeto herda as
características de uma
única classe.
Herança Múltipla: uma
objeto herda características
de mais de uma classe.
◦ Algumas linguagens não
permitem
CLASSE BASE
CLASSES DERIVADAS
A B
AB
C
D
Características
Herdadas
AB
E F
28. Herança
Relacionamento entre classes onde uma classe
compartilha a estrutura e o comportamento de
uma ou mais classes;
Define uma hierarquia de abstrações na qual a
subclasse herda de uma ou mais superclasses:
◦ Herança simples;
◦ Herança múltipla;
Uma herança é um relacionamento do tipo “é um
tipo de”.
29. Herança
A subclasse herda os atributos, operações e relacionamentos da
superclasse;
Cada subclasse pode definir novos atributos e/ou operações.;
Cada subclasse pode redefinir operações da superclasse;
Cada subclasse pode participar de relacionamentos específicos.
30. Herança
Como identificar necessidade de heranças?
◦ Procure por similaridades entre as classes;
◦ Siga a regra: a subclasse é um tipo da superclasse;
◦ Evite herança de implementação, siga a regra;
◦ A herança deve ser total, pela subclasses;
Caso a regra não seja satisfeita, utilize composição.