O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Modelos de banco de dados
Modelos de banco de dados
Carregando em…3
×

Confira estes a seguir

1 de 31 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a 03 poo (20)

Anúncio

Mais recentes (20)

03 poo

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

×