Aula 4 – Encapsulamento e Relacionamento Cleverton...
Transcript of Aula 4 – Encapsulamento e Relacionamento Cleverton...
![Page 1: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/1.jpg)
Aula 4 – Encapsulamento e Relacionamento Cleverton Hentz
![Page 2: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/2.jpg)
Sumário
2
} Encapsulamento } Propriedades } Relacionamentos
} Composição } Herança
![Page 3: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/3.jpg)
O que é encapsulamento ?
3
} O que vocês entendem por encapsular?! } Ato de envolver em uma cápsula: Isolar!
} Encapsulamento é a característica da OO capaz de ocultar partes (dados e detalhes) de implementação interna de classes do mundo exterior.
} Isso torna-se necessário para que possamos controlar melhor as modificações em uma classe, em especial em seus atributos
} Exemplo: } Um liquidificador e seu usuário
![Page 4: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/4.jpg)
O que é encapsulamento ?
4
} Cria o conceito de que um determinado objeto oferece um serviços, mas que o usa não sabe como isso é realizado e deve se preocupar apenas com o resultado final
} A interface é o que liga o usuário com os métodos/atributos internas da classe
![Page 5: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/5.jpg)
Modificadores de Acesso
5
} Não podemos implementar um encapsulamento sem antes falarmos sobre modificadores de acesso
} Os modificadores de acesso reforçam a segurança na implementação das classes e seus membros
} Até agora usamos apenas os modificadores public
![Page 6: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/6.jpg)
Modificadores de Acesso
6
Modificador Significado
private Acesso restrito à classe
internal Acesso restrito ao programa
protected Acesso restrito à classe e classes filhas (Apenas da família)
public Acesso irrestrito
} Exemplos:
![Page 7: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/7.jpg)
Modificadores de Acesso
7
} O VisualStudio ira limitar a visão de seus membros fora da classe (no momento do uso)
} Usando a definição anterior como exemplo:
![Page 8: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/8.jpg)
Modificadores de Acesso
8
} Cada tipo de declaração tem um valor padrão de modificador de acesso quando esse não é definido
} Valor padrão para cada tipo de declaração
} Exemplo
Modificador Padrão Tipo de declaração
internal Classe
private Métodos
private Atributos
![Page 9: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/9.jpg)
Propriedades em C#
9
} Uma propriedade é um recurso do C# para facilitar/substituir a declaração de métodos get/set
} Exemplo:
Definição dos métodos get/set
Variável padrão que representa o novo valor para o
atributo
Nome do atributo
![Page 10: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/10.jpg)
Relacionamento
10
} Os sistemas OO são construídos através de objetos que conversam
} Essa “conversa” entre objetos é chamada de relacionamento
} Na OO existem vários tipos de relacionamentos
![Page 11: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/11.jpg)
Relacionamento: Composição
11
} Composição ou Agregação é um mecanismo de reaproveitamento (reutilização) de classes utilizado pela POO para aumentar a produtividade e a qualidade no desenvolvimento de software
} O uso da composição durante a criação de novas classes aumenta a produtividade (velocidade de construção do sistema OO) } Partes do código que seriam desenvolvidas serão apenas
utilizadas
![Page 12: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/12.jpg)
Relacionamento: Composição
12
} Por exemplo um carro é um objeto COMPOSTO por vários outros objetos. } Objetos como motor, pneus, direção e faróis.
} No nosso sistema acadêmico ? } Alunos } Turmas } Professores
![Page 13: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/13.jpg)
Relacionamento: Composição
13
} Como ficaria então a implementação da classe Carro utilizando a composição ?
![Page 14: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/14.jpg)
Atividade
14
} Para as classes Livro e Computador como ficaria as classes e a sua composição ?
} Tempo 15 min.
![Page 15: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/15.jpg)
Relacionamento: Composição
15
} Quando uma classe é definida através da composição surge o problema de como instanciar seus componentes } Carro c = new Carro();
} Se nada foi feito os componentes da nova instância serão null (vazio)
} Qual a solução para o problema ? } Instanciar os componentes da classe composta de maneira
automática } Solicitar ao usuário que forneça os componentes instanciados
a classe composta
![Page 16: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/16.jpg)
Composição – Caso 1
16
} No construtor da classe composta devem ser criadas novas instancias dos componentes
![Page 17: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/17.jpg)
Composição – Caso 2
17
} Neste caso os componentes da classe composta são informados pelo usuário da classe
![Page 18: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/18.jpg)
Composição - Avaliação
18
} Caso 1 – Criação dos componentes dentro da classe composta } Simplicidade na criação da classe composta } Não é possível acessar as propriedades dos componentes } Falta de flexibilidade } Usuário necessita de pouco conhecimento sobre componentes
} Caso 2 – Criação dos componentes pelos usuários da classe } Criação se torna mais complexa } Permite mais configurações pelo usuário } Usuário necessita de pouco conhecimento sobre componentes
![Page 19: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/19.jpg)
Relacionamento: Herança
19
} Herança é o mapeamento do tipo árvore de relacionamentos que se formam entre as classes como resultado da herança
} A figura abaixo representa uma hierarquia de herança ou hierarquia de classe.
![Page 20: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/20.jpg)
Herança – Termos Utilizados
20
} Alguns termos importantes dentro do conceito de herança
![Page 21: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/21.jpg)
Herança – Resolução de Atributos Durante a Execução
21
} Durante a execução do código OO quando uma informação é solicitada a um objeto esta informação é procurada na hierarquia de classes
![Page 22: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/22.jpg)
Herança – C#
22
} No C# a herança é declarada na definição da classe filha
![Page 23: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/23.jpg)
Herança – Modificador de Acesso
23
} Como havíamos visto o modificador de acesso protected permite acesso apenas as subclasses de uma determinada classe
![Page 24: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/24.jpg)
Herança – Acesso ao Construtor da Classe Mãe
24
} Durante a implementação de um construtor numa classe filha é possível chamar o construtor de sua mãe } Redução da código
![Page 25: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/25.jpg)
Herança – Detalhe sobre Construtores
25
} Todo construtor de uma classe filha chama o construtor da classe mãe mesmo que essa não possua um
} Isso pode causar problemas
![Page 26: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/26.jpg)
Herança – Resolução de Métodos Durante a Execução
26
} Durante a execução do código OO quando um método for invocado em um objeto este método é procurado na hierarquia de classes
![Page 27: Aula 4 – Encapsulamento e Relacionamento Cleverton Hentzcleverton-ifrn.wdfiles.com/local--files/poo/Poo.Aula4.pdf · 2013-01-18 · POO para aumentar a produtividade e a qualidade](https://reader034.fdocuments.net/reader034/viewer/2022050609/5fb06725ff1cc55c863697e7/html5/thumbnails/27.jpg)
Uso da Herança em Variáveis
27
} Através da herança é possível declarar variáveis de uma determinada classe e atribuir objetos de outra classe que participe da herança
} As variáveis de classes mães podem receber objetos de qualquer classe de sua hierarquia