35
Um mundo orientado a objetos Professor Eduardo Henrique de Oliveira

Orientação a Objetos - 01

Embed Size (px)

Citation preview

Page 1: Orientação a Objetos - 01

Um mundo orientado a objetosProfessor Eduardo Henrique de Oliveira

Page 2: Orientação a Objetos - 01

Um mundo orientado a objetos

•O ser humano, no início de sua infância, aprende e pensa de uma maneira orientada a objetos, representando o seu conhecimento por meio de abstrações e classificações.

•Continuamos fazendo isso mesmo quando adultos mas desenvolvemos outras técnicas que também utilizamos em paralelo.

Page 3: Orientação a Objetos - 01

Um mundo orientado a objetos•A orientação a objetos, é um paradigma de

análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos.

•O termo orientação a objetos pressupõe uma organização de software em termos de coleção de objetos discretos incorporando estrutura e comportamento próprios.

Page 4: Orientação a Objetos - 01

Um mundo orientado a objetos• O enfoque de modelagem por objetos, vê o

mundo como uma coletânea de objetos que interagem entre si, apresentam características próprias que são representadas pelos seus atributos (dados) e operações (métodos ou serviços).

• Resumidamente, a mudança de enfoque (entre estruturado e orientado a objetos) é justificada pelo fato de que objetos existem na natureza muito antes de haver qualquer tipo de aplicação deles pelo negócio.

Page 5: Orientação a Objetos - 01

Um mundo orientado a objetos

•Um objeto é uma entidade do mundo real que tem uma identidade.

•Objetos podem representar entidades concretas (um arquivo de música, uma bicicleta) ou entidades conceituais (uma estratégia de jogo, uma regra de um firewall).

Page 6: Orientação a Objetos - 01

Um mundo orientado a objetos

•Cada objeto ter sua identidade significa que dois objetos são distintos mesmo que eles apresentem exatamente as mesmas características.

Bicicleta do João Bicicleta da Maria

Page 7: Orientação a Objetos - 01

Um mundo orientado a objetos

•Embora objetos tenham existência própria no mundo real, em termos de linguagem de programação um objeto necessita um mecanismo de identificação.

•Esta identificação do objeto deve ser única, uniforme e independente do conteúdo do objeto.

Page 8: Orientação a Objetos - 01

Um mundo orientado a objetos

•A estrutura de um objeto é representada em termos de atributos.

Marca.Modelo.Cor.Nº marchas.Tamanho.

Page 9: Orientação a Objetos - 01

Um mundo orientado a objetos

•O comportamento de um objeto é representado pelo conjunto de operações (métodos) que podem ser executadas sobre o objeto.

Pedalar.Frear.Virar para esquerda.Virar para direita.Empinar.

Page 10: Orientação a Objetos - 01

Um mundo orientado a objetos

•Objetos com a mesma estrutura e o mesmo comportamento são agrupados em classes.

Classe Bicicleta

Page 11: Orientação a Objetos - 01

Um mundo orientado a objetos

•Uma classe é uma abstração que descreve propriedades (atributos e operações) importantes para uma aplicação e simplesmente ignora o resto.Marca.

Modelo.Cor.Nº marchas.Tamanho.

Pedalar.Frear.Virar para esquerda.Virar para direita.Empinar.

Classe Bicicleta

Page 12: Orientação a Objetos - 01

Um mundo orientado a objetos

•Cada classe descreve um conjunto de objetos individuais.

•Cada objeto é dito ser instância de uma classe.

Bicicleta do João(Instância da classe Bicicleta) Motocicleta do João

(Instância da classe Motocicleta)

Page 13: Orientação a Objetos - 01

Um mundo orientado a objetos

•Cada instância de uma classe tem seus próprios valores para cada atributo (estado), mas dividem os nomes dos atributos e métodos com as outras instâncias da classe.

Bicicleta do João(Instância da classe Bicicleta)

Bicicleta da Maria(Instância da classe Bicicleta)

Marca: CaloiModelo: CrossCor: AzulNº marchas: 1Tamanho: Aro 20

Marca: CaloiModelo: CeciCor: RosaNº marchas: 21Tamanho: Aro 24

Page 14: Orientação a Objetos - 01

Um mundo orientado a objetos

•Três princípios norteiam o paradigma da orientação a objeto:▫Polimorfismo.▫Herança.▫Encapsulamento.

Page 15: Orientação a Objetos - 01

Um mundo orientado a objetos

•Polimorfismo: a palavra polimorfismo vem do grego e significa que pode tomar várias formas.

•Encontramos geralmente três tipos de polimorfismo:▫ O polimorfismo ad hoc.▫ O polimorfismo paramétrico.▫ O polimorfismo de herança.

Page 16: Orientação a Objetos - 01

Um mundo orientado a objetos

• Polimorfismo ad hoc: permite ter funções do mesmo nome, com funcionalidades similares, em classes distintas.

• O polimorfismo ad hoc permite assim definir operadores cuja utilização será diferente de acordo com o tipo dos parâmetros que lhes são passados. É por isso possível, por exemplo, sobrecarregar o operador + e fazê-lo realizar ações diferentes conforme se trate de uma operação entre duas totalidades (adição) ou entre duas cadeias de caracteres (concatenação).

Page 17: Orientação a Objetos - 01

Um mundo orientado a objetos

•Polimorfismo paramétrico: representa a possibilidade de definir várias funções do mesmo nome mas possuindo parâmetros diferentes (em número e/ou tipo).

•O polimorfismo paramétrico torna assim possível a escolha automática do bom método a adotar em função do tipo de dado passado em parâmetro.

Page 18: Orientação a Objetos - 01

Um mundo orientado a objetos• Assim, pode-se por exemplo definir vários

métodos homônimos adição( ) efectuando uma soma de valores.▫ O método int addition (int, int) poderá dar a soma de

duas totalidades▫ O método float addition (float, float) poderá dar a soma

de dois flutuantes▫ O método char addition (char, char) poderá definir à

vontade do autor a soma de dois caracteres etc.

• Chama-se assinatura ao número e tipo (estático) dos argumentos de uma função. É por conseguinte a assinatura de um método que determina qual será chamado.

Page 19: Orientação a Objetos - 01

Um mundo orientado a objetos

•Polimorfismo de herança: a possibilidade de chamar o método de um objeto sem estar preocupado com o seu tipo intrínseco.

•Isto permite fazer abstração dos detalhes das classes especializadas de uma família de objeto, mascarando-o com um interface comum (que é a classe básica).

Page 20: Orientação a Objetos - 01

Um mundo orientado a objetos

•Imagine um jogo de xadrez que comporta os objetos rei, rainha, bispo, cavalo, torre e peão, herdando cada um do objeto peça.

Page 21: Orientação a Objetos - 01

Um mundo orientado a objetos

•O método movimento( ) poderá, graças ao polimorfismo de herança, efetuar o movimento adequado em função da classe do objeto remetido no momento da chamada.

Rainha.movimento( ) Bispo.movimento( )

Peao.movimento( )

Page 22: Orientação a Objetos - 01

Um mundo orientado a objetos

PEÇA

RAINHA

REI

BISPO

CAVALO

TORRE

PEÃO

movimento( )

movimento( )

movimento( )

movimento( )

movimento( )

movimento( )

movimento( )

(Polimorfismo de herança)

Page 23: Orientação a Objetos - 01

Um mundo orientado a objetos•A herança (em inglês inheritance) é um

princípio próprio à programação orientada para o objeto, permitindo criar uma nova classe a partir de uma classe existente.

•O nome “herança” (que pode às vezes ser chamada "derivação de classe") provém do fato de a classe derivada (a última classe criada) conter os atributos e os métodos da sua superclasse (a classe da qual deriva).

Page 24: Orientação a Objetos - 01

Um mundo orientado a objetos

•O interesse essencial da herança é poder definir novos atributos e novos métodos para a classe derivada, que vêm acrescentar-se aos herdados.

•Por este meio, cria-se uma hierarquia de classes cada vez mais especializadas.

•Isto tem a vantagem essencial de não ter de partir do zero quando se quer especializar uma classe existente.

Page 25: Orientação a Objetos - 01

Um mundo orientado a objetos

•Hierarquia de classes: representação da relação de parentesco que existe entre diferentes classes.

Page 26: Orientação a Objetos - 01

Um mundo orientado a objetos

•Inicia-se por uma classe geral chamada superclasse (às vezes classe básica, classe parente, classe antepassado, classe mãe ou classe pai, as metáforas genealógicas são numerosas).

•Seguidamente, as classes derivadas (classe filha ou sub-classe) tornam-se cada vez mais especializadas.

Page 27: Orientação a Objetos - 01

Um mundo orientado a objetos

•Assim, pode-se geralmente exprimir a relação que vincula uma classe filha à sua mãe pela frase “é um” (do inglês “is a”).

Classe pai

Classe filha

Page 28: Orientação a Objetos - 01

Um mundo orientado a objetos

•Herança múltipla: possibilidade herdar uma classe de duas superclasses.

Page 29: Orientação a Objetos - 01

Um mundo orientado a objetos

•Encapsulamento: é um mecanismo que consiste em reunir os dados e os métodos numa estrutura escondendo a implementação do objeto, ou seja, impedindo o acesso aos dados por um meio diferente dos serviços propostos.

•O encapsulamento permite por conseguinte garantir a integridade dos dados contidos no objeto.

Page 30: Orientação a Objetos - 01

Um mundo orientado a objetos• O utilizador de uma classe não tem

necessariamente de saber como estão estruturados os dados no objeto, isto significa que um utilizador não tem de conhecer a aplicação.

• Assim, proibindo o utilizador de alterar diretamente os atributos, e obrigando-o a utilizar as funções definidas para alterá-los (chamadas interfaces), podemos garantir a integridade dos dados (poderá por exemplo garantir que o tipo dos dados fornecido está conforme ao desejado, ou ainda que os dados se encontram no intervalo esperado).

Page 31: Orientação a Objetos - 01

Um mundo orientado a objetos

•O encapsulamento permite definir níveis de visibilidade dos elementos da classe. Estes níveis de visibilidade definem os direitos de acesso aos dados e operações conforme este acesso seja por um método da própria classe, de uma classe herdeira, ou de uma classe qualquer.

Page 32: Orientação a Objetos - 01

Um mundo orientado a objetos•Existem três níveis de visibilidade:

▫ pública: as funções de todas as classes podem acessar os dados ou os métodos de uma classe definida com o nível de visibilidade pública. Trata-se de mais baixo nível de proteção de dados▫ protegida : o acesso aos dados está reservado às funções das classes herdeira, ou seja, às funções membros da classe, bem como as classes derivadas▫ privada: o acesso aos dados é limitado aos métodos da própria classe. Trata-se do nível de proteção dos dados mais elevado.

Page 33: Orientação a Objetos - 01

Um mundo orientado a objetos• Abstração OO: Habilidade mental que permite

aos seres humanos visualizarem os problemas do mundo real com vários graus de detalhe, dependendo do contexto corrente do problema. [Rumbaugh]

• Abstração é a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes ou acidentais. Em modelagem orientada a objetos, uma classe é uma abstração de entidades existentes no domínio do sistema de software.

Page 34: Orientação a Objetos - 01

Atividade práticaPara a próxima aula:Relacionar 10 (dez) objetos com os seus atributos e operações. Identificar entre quais há uma relação de herança e montar o diagrama de hierarquia de classes.

Page 35: Orientação a Objetos - 01

Dúvidas ?