Programação Orientada a Objetos. Atualização material aula 01.

37
Programação Orientada a Objetos

Transcript of Programação Orientada a Objetos. Atualização material aula 01.

Page 1: Programação Orientada a Objetos. Atualização material aula 01.

Programação Orientada a Objetos

Page 2: Programação Orientada a Objetos. Atualização material aula 01.

Atualização material aula 01

Page 3: Programação Orientada a Objetos. Atualização material aula 01.

História

Se tornou muito conhecida no início da década de 1990 porém surgiu em 1960.

Até hoje é uma pratica não muito compreendida entre os desenvolvedores de software.

O paradigma de POO surgiu a partir da necessidade de desenvolver programas com mais

qualidade, ter reaproveitamento de código e diminuir o tempo de desenvolvimento.

A programação estruturada e a base da POO

Um dos motivadores foi o avanço do hardware que não acompanhava o avanço do software.

Page 4: Programação Orientada a Objetos. Atualização material aula 01.

Em 1967 surge a linguagem de programação SIMULA 67 que introduz o conceito de

classe.

Na década de 1970 surge o Smalltalk uma linguagem de programação orientada a

objetos que popularizou esse conceito.

Logo depois novas linguagem como Java, Object Pascal, Ada, C++ implementam de

POO.

A base da POO é a abstração, não sendo uma ferramenta em si, mas sim uma forma

de programação utilizada ar solucionar problemas do mundo real.

Page 5: Programação Orientada a Objetos. Atualização material aula 01.

É uma forma de solução de problemas baseado na cooperação de elementos que

prestam serviços a outros elementos, esse elementos são os objetos.

“Suponha que eu precise consultar a disponibilidade de um livro para reserva em uma

biblioteca quando eu solicitar essa informação ao bibliotecário, eu não preciso saber os

detalhes de como o bibliotecário irá fazer a consulta e nem mesmo preciso interferir

nessa consulta, eu apenas preciso saber o resultado. Nesse caso eu apenas faço a

comunicação com o responsável e espero o resultado”.

Programação Orientada a Objetos

Page 6: Programação Orientada a Objetos. Atualização material aula 01.

O aumento da complexidade fez com que surgisse a necessidade de dividir a solução

dos problemas em partes, distribuindo as responsabilidade em unidade

independentes com a ocultando informações e a colaboração entre as unidades.

Sob o ponto de vista de informações temos objetos, que provem serviços, esse

objetos tem estados, que dão soluções próprias ao serviços requisitados.

Na POO temos o objeto que deve ser criado, ele guarda um conjunto de dados, os

atributos, e provem serviços através dos métodos.

Page 7: Programação Orientada a Objetos. Atualização material aula 01.

Tipo de dados abstrato em POO é o que chamado de classe, na programação

estrutura temos os tipos de dados primitivos e os tipos de dados derivados

(record).

Page 8: Programação Orientada a Objetos. Atualização material aula 01.

Fundamentos de Programação Orientada a Objetos

Page 9: Programação Orientada a Objetos. Atualização material aula 01.

É um modelo utilizado para formatar a estrutura de um objeto, esse estrutura

é utilizada para instanciar um objeto. A classe estabelece um conjunto de

atributos e métodos comuns a um determinado objeto.

Classes abstratas

Possuem objetos que não estão relacionados a classe(ela mesmo),

quando definimos uma classe abstrata para ela fazer sentido deve ter

um ou mais métodos abstratos, ou seja métodos que não tem

implementação.

Classes abstratas não podem ser instanciadas.

Classes

Page 10: Programação Orientada a Objetos. Atualização material aula 01.
Page 11: Programação Orientada a Objetos. Atualização material aula 01.
Page 12: Programação Orientada a Objetos. Atualização material aula 01.

Classes concretas

Possuem objetos relacionados a classe (ela mesma), e todos os métodos devem

ter implementações.

Classes

Page 13: Programação Orientada a Objetos. Atualização material aula 01.
Page 14: Programação Orientada a Objetos. Atualização material aula 01.

Exemplos de classes

Exemplos de declaração de

classes

Page 15: Programação Orientada a Objetos. Atualização material aula 01.

Ruby

Page 16: Programação Orientada a Objetos. Atualização material aula 01.

Python

Page 17: Programação Orientada a Objetos. Atualização material aula 01.

Object Pascal

Page 18: Programação Orientada a Objetos. Atualização material aula 01.

C++

Page 19: Programação Orientada a Objetos. Atualização material aula 01.

PHP

Page 20: Programação Orientada a Objetos. Atualização material aula 01.

Java

Page 21: Programação Orientada a Objetos. Atualização material aula 01.

O objeto é um módulo que possui rotinas e estrutura de dados e consegue

interagir com outros objetos através da troca de mensagens que é o

mecanismo de comunicação entre objetos.

Troca de mensagem é a execução de um pedido de informação ou uma requisição

feita por meio de parâmetros.

Os objetos são instanciados através de classes e possuem um estado.

Objetos

Page 22: Programação Orientada a Objetos. Atualização material aula 01.

Temos dois tipos de objetos

Objetos persistentes: quando um objeto é gravado em memória persistente, ou seja a

memoria secundaria. Exemplo de persistência é a gravação de um objeto em um DB e a

serialização.

Objetos transitórios: Utilizado em memória no computador.

Objetos

Page 23: Programação Orientada a Objetos. Atualização material aula 01.

São as propriedade que definem os objetos, o atributo pode ser comparado a uma

variável.

Os atributos são divididos em duas categorias.

Atributos de classe: Podem ser acessados por todos os objetos dessa classe, dessa

forma o atributo é compartilhado dessa mesma classe. Em Java definimos esse tipo de

atributo como utilizando a palavra reservada static. Semelhante a esse conceito temos

os métodos de classe.

Atributos de instancia: São atributos definidos no objeto e gerenciados pelo próprio

objeto que tema a responsabilidade de manipular o seu valor. Semelhante a esse

conceito temos os métodos de instância.

Atributos

Page 24: Programação Orientada a Objetos. Atualização material aula 01.
Page 25: Programação Orientada a Objetos. Atualização material aula 01.

É uma forma que permite alterar características de atributos, efetuar

controles lógicos que refletirão em ações.

Os métodos devem permitir manipular estados de variáveis através de

funcionalidades.

Exemplo: métodos que calcula o debito de uma conta.

Os métodos são subprogramas que definem operações em objetos da classe.

Método

Page 26: Programação Orientada a Objetos. Atualização material aula 01.

Oferece a possibilidade de solução para um problema pois uma nova classe pode

herdar dados e funcionalidades de uma classe já existente.

A nova classe pode adicionar, modificar dados e funcionalidades.

Uma classe herdada é chamada de classe derivada, subclasse, classe filha.

Temos dois tipos de herança

Herança simples: Quando uma nova classe é uma subclasse de uma única classe pai.

Linguagem como Java, Delphi, C# permitem somente herança simples.

Herança

Page 27: Programação Orientada a Objetos. Atualização material aula 01.

Herança múltipla: Quando uma nova classe é uma subclasse de mais de uma classe pai.

Diferenças entre classe pai e classe filha.

A classe pai pode ter métodos privados que não são visíveis a classe filha.

A classe filha pode adicionar membros novo a ela.

A classe filha pode modificar comportamento de métodos herdados da classe pai.

A herança também pode ser chamada de generalização pelo fato de dar a possibilidade

de herdar as características da classe pai pela classe filha dando a capacidade de

transmitir automaticamente as propriedades e características a classe herdada.

Em Java utilizado a palavra reservada extends para fazer a herança.

Herança

Page 28: Programação Orientada a Objetos. Atualização material aula 01.
Page 29: Programação Orientada a Objetos. Atualização material aula 01.
Page 30: Programação Orientada a Objetos. Atualização material aula 01.

É a forma como é definido o modo de visualização (escopo de visibilidade) de atributos e

métodos de uma classe em relação a seus objetos.

Dessa forma podemos ocultar recursos que não são de interesse da classe que usa esse

recursos.

Dessa forma temos recursos visíveis e invisíveis.

Classificação do encapsulamento.

Seção pública: acesso total aos atributos e métodos.

Seção privada: acesso somente na própria classe dos atributos e métodos.

Seção protegida: esta relacionada a herança e permite que os atributos e métodos estejam

visíveis na própria classe e nas classes herdadas.

Encapsulamento

Page 31: Programação Orientada a Objetos. Atualização material aula 01.

Tabela que mostra o escopo de visibilidade do Java

Encapsulamento

Modificador Classe PacoteSubclass

eGlobalment

e

public sim sim sim sim

protected sim sim sim não

Sem Modificador (Padrão)

sim sim não não

private sim não não não

Page 32: Programação Orientada a Objetos. Atualização material aula 01.
Page 33: Programação Orientada a Objetos. Atualização material aula 01.

Uma interface é uma estrutura muito parecida com classes abstratas, porém na

interface os métodos não tem implementação

Uma interface não tem construtor e não pode ser declarado variáveis.

Quando uma classe herda uma interface todos os métodos da interface devem

ser implantados na classe.

Interfaces são utilizadas para implementar herança múltipla em Java.

Interfaces

Page 34: Programação Orientada a Objetos. Atualização material aula 01.
Page 35: Programação Orientada a Objetos. Atualização material aula 01.

A palavra polimorfismo significa ter muitas formas, e isso em programação ser refere

a possiblidade de um método ter varias implementações ou assinaturas.

Métodos são polimórficos quando derivam de classes concretas, classe abstratas

e interfaces.

É de responsabilidade do compilador atribuir a assinatura adequada de um método

polimórfico.

Em Java utilizamos a anotação @Override para deixar explicito que um método é

polimórfico.

Polimorfismo

Page 36: Programação Orientada a Objetos. Atualização material aula 01.
Page 37: Programação Orientada a Objetos. Atualização material aula 01.

Exercícios e Prática