SlideShare a Scribd company logo
1 of 31
Download to read offline
Orientação a
Objetos
PROFESSOR: EDUARDO HABIB
HABIB@DIV.CEFETMG.BR
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.
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.
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.
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.
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.
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;
}
};
Classes
Classes suportam os conceitos de:
◦ Encapsulamento
◦ Herança
◦ Abstração
◦ Proteção de dados;
◦ Polimorfismo;
◦ Hierarquia.
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.
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:
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.
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
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:
Conceitos OO
Classes
 Encapsular consiste em incluir, proteger em uma
cápsula, classe;
 Encapsular é ocultar do usuário o funcionamento
interno de uma classe.
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.
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;
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;
Encapsulamento versus
abstração
A abstração representa um conceito
O encapsulamento impede os clientes de verem como este
conceito foi implementado
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;
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.
Herança
Capacidade de compartilhar estruturas comuns entre diversas classes
derivadas
Reaproveitamento de código da classe pai
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.
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.
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
Destrutor
Destrutores são métodos invocados quando um objeto está para
``morrer''.
 Liberação de recursos
 Evita o vazamento de memória.
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.
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
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”.
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.
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.
Exercício
Implemente em c++ as classes que representam a seguinte relação de
herança:

More Related Content

What's hot

Aula diagrama de atividade 3º periodo uniao
Aula diagrama de atividade 3º periodo uniaoAula diagrama de atividade 3º periodo uniao
Aula diagrama de atividade 3º periodo uniaoMaria Alice Jovinski
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoVinícius de Paula
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)Janynne Gomes
 
Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Ricardo Terra
 
3 - Modelo Entidade Relacionamento
3 - Modelo Entidade Relacionamento3 - Modelo Entidade Relacionamento
3 - Modelo Entidade RelacionamentoCris Fidelix
 
Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Vitor Hugo Melo Araújo
 
Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01thomasdacosta
 
Aula 10 - Diagrama de Sequencia.pdf
Aula 10 - Diagrama de Sequencia.pdfAula 10 - Diagrama de Sequencia.pdf
Aula 10 - Diagrama de Sequencia.pdfIvanFontainha
 
Arquitetura de software : Cliente-Servidor
Arquitetura de software : Cliente-ServidorArquitetura de software : Cliente-Servidor
Arquitetura de software : Cliente-ServidorAlexsandro Oliveira
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em PythonRodrigo Hübner
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetosNécio de Lima Veras
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 

What's hot (20)

Aula diagrama de atividade 3º periodo uniao
Aula diagrama de atividade 3º periodo uniaoAula diagrama de atividade 3º periodo uniao
Aula diagrama de atividade 3º periodo uniao
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de Projeto
 
Fundamentos do java
Fundamentos do javaFundamentos do java
Fundamentos do java
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
 
Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)
 
3 - Modelo Entidade Relacionamento
3 - Modelo Entidade Relacionamento3 - Modelo Entidade Relacionamento
3 - Modelo Entidade Relacionamento
 
Html Básico
Html BásicoHtml Básico
Html Básico
 
Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER
 
Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01
 
Aula 10 - Diagrama de Sequencia.pdf
Aula 10 - Diagrama de Sequencia.pdfAula 10 - Diagrama de Sequencia.pdf
Aula 10 - Diagrama de Sequencia.pdf
 
Aula 7 banco de dados
Aula 7   banco de dadosAula 7   banco de dados
Aula 7 banco de dados
 
Arquitetura de software : Cliente-Servidor
Arquitetura de software : Cliente-ServidorArquitetura de software : Cliente-Servidor
Arquitetura de software : Cliente-Servidor
 
Árvores de Decisão
Árvores de Decisão Árvores de Decisão
Árvores de Decisão
 
Protocolos de Redes
Protocolos de RedesProtocolos de Redes
Protocolos de Redes
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em Python
 
Aula 6 - Cardinalidade
Aula 6 - CardinalidadeAula 6 - Cardinalidade
Aula 6 - Cardinalidade
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Aula 07 - Diagrama de sequencia
Aula 07 - Diagrama de sequenciaAula 07 - Diagrama de sequencia
Aula 07 - Diagrama de sequencia
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 

Similar to 03 poo

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 vbaWanderlei Silva do Carmo
 
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosIES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosRamon Mayor Martins
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
Programação Orientada a Objeto(POO)
Programação Orientada a Objeto(POO)Programação Orientada a Objeto(POO)
Programação Orientada a Objeto(POO)Carlos Alberto
 
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
 
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.0César Augusto Pessôa
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidIury Teixeira
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem IIIJuliano Weber
 
Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Marcelo Zeferino
 
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çaMoises Omena
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Saulo Arruda
 
Orientação a Objetos - Conceitos
Orientação a Objetos - ConceitosOrientação a Objetos - Conceitos
Orientação a Objetos - ConceitosMayron Cachina
 

Similar to 03 poo (20)

Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
 
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
 
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosIES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Programação Orientada a Objeto(POO)
Programação Orientada a Objeto(POO)Programação Orientada a Objeto(POO)
Programação Orientada a Objeto(POO)
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
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)
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
 
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
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores Android
 
v
vv
v
 
Java7
Java7Java7
Java7
 
Classes e Estrutura de Dados
Classes e Estrutura de DadosClasses e Estrutura de Dados
Classes e Estrutura de Dados
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1
 
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
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
 
Orientação a Objetos - Conceitos
Orientação a Objetos - ConceitosOrientação a Objetos - Conceitos
Orientação a Objetos - Conceitos
 
Aula orientação a objetos
Aula orientação a objetosAula orientação a objetos
Aula orientação a objetos
 

03 poo

  • 1. Orientação a Objetos PROFESSOR: EDUARDO HABIB HABIB@DIV.CEFETMG.BR
  • 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;
  • 18. Encapsulamento versus abstração A abstração representa um conceito O encapsulamento impede os clientes de verem como este conceito foi implementado
  • 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.
  • 21. Herança Capacidade de compartilhar estruturas comuns entre diversas classes derivadas Reaproveitamento de código da classe pai
  • 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.
  • 31. Exercício Implemente em c++ as classes que representam a seguinte relação de herança: