aula 4 – encapsulamento e relacionamento cleverton...

27
Aula 4 – Encapsulamento e Relacionamento Cleverton Hentz

Upload: others

Post on 13-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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