conceitos de programa˘c~ao orientada por objectosprog2/docs/programacaooo.pdf · i desenvolvimento...

29
Conceitos de Programa¸ ao Orientada por Objectos Conceitos de Programa¸ ao Orientada por Objectos Rui Camacho Programa¸ ao 2

Upload: phambao

Post on 27-Nov-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Conceitos de Programacao Orientada por Objectos

Rui Camacho Programacao 2

Page 2: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Um Problema

Problema:Existem, hoje em dia, aplicacoes complexas e de grande dimensaoque e preciso desenvolver e manter de modo eficiente utilizandoequipas de programadores.

Pergunta:

Porque nao fazer em C ? Resposta:

Porque o C nao tem todas as caracterısticas necessarias para aresolucao adequada do problema!!Ex: experimente conceber um programa em C para gerir osRecursos Humanos de uma empresa com uma diversidade enormede empregados....

Rui Camacho Programacao 2

Page 3: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Um Problema

Problema:Existem, hoje em dia, aplicacoes complexas e de grande dimensaoque e preciso desenvolver e manter de modo eficiente utilizandoequipas de programadores.

Pergunta:

Porque nao fazer em C ?

Resposta:

Porque o C nao tem todas as caracterısticas necessarias para aresolucao adequada do problema!!Ex: experimente conceber um programa em C para gerir osRecursos Humanos de uma empresa com uma diversidade enormede empregados....

Rui Camacho Programacao 2

Page 4: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Um Problema

Problema:Existem, hoje em dia, aplicacoes complexas e de grande dimensaoque e preciso desenvolver e manter de modo eficiente utilizandoequipas de programadores. Pergunta:

Porque nao fazer em C ?

Resposta:

Porque o C nao tem todas as caracterısticas necessarias para aresolucao adequada do problema!!Ex: experimente conceber um programa em C para gerir osRecursos Humanos de uma empresa com uma diversidade enormede empregados....

Rui Camacho Programacao 2

Page 5: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Abordagem Orientada a Objectos

Objectivo:I aplicacoes que resolvem problemas de elevada complexidade

I facilitar a utilizacao de equipas de programadores

I tecnicas de desenvolvimento rapido de aplicacoes

Abordagem:I decompor o problema em partes mais simples e independentes

I cada equipa trabalha na implementacao da solucao de uma parte doproblema. Interaccao mınima com as outras equipas

I os “modulos” desenvolvidos sao reutilizaveis em outras aplicacoes

Rui Camacho Programacao 2

Page 6: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Linguagens de Alto-nıvel iniciais

Limitacoes:

I falta de estruturacao

I nenhuma especie de encapsulamento

I nenhum aspecto de abstraccao

Exemplos: implementacoes iniciais de Fortran e Basic

Rui Camacho Programacao 2

Page 7: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Procedimentos

Blocos de codigo com variaveis locais que implementam algoritmosou operacoes elementares de algoritmos. Acesso atraves dechamada pelo nome e passagem de parametros.Vantagens:

I estruturacao/modularidade

I certo grau de encapsulamento

I certo grau de abstraccao

Rui Camacho Programacao 2

Page 8: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Procedimentos (cont.)

Limitacoes:

I nomes de funcoes nao podem ser duplicados (ex: a funcao de inserirem estruturas de dados diferentes requer funcoes com nomesdiferentes)

I dados manipulados por diferentes funcoes (ex: stack com operacoesde pop e push) sao declarados globais

I nao existe instanciacao. Nao se pode replicar dinamicamente umaestrutura de dados com operacoes de manutencao associadas.

Exemplos: funcoes do C ou procedimentos/funcoes do Pascal

Rui Camacho Programacao 2

Page 9: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Modulos

Blocos que ecapsulam dados e procedimentos. Uma interfaceespecifica o que e visıvel do exterior.Vantagens:

I estruturacao/modularidade

I encapsulamento de dados e procedimentos

I certo grau de abstraccao

Limitacoes:

I nao ha instanciacao. So existe um modulo de cada “especie”. Naose pode replicar dinamicamente um modulo

Rui Camacho Programacao 2

Page 10: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Tipos Abstractos de Dados

Conjunto de dados com operacoes de manipulacao associadas.Vantagens:

I abstraccao

I instanciacao

Limitacoes:

I nao tem algumas caracterısticas importantes de uma linguagemO.O. (ex: heranca)

Exemplos: Stack com operacoes de pop, push, top etc

Rui Camacho Programacao 2

Page 11: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Objectos

Entidades que contem dados e procedimentos e estao organizadashierarquicamente. Utilizam um mecanismo de envio de mensagens.Vantagens:

I abstraccao/instanciacao

I heranca

I modularidade

I encapsulamento

I polimorfismo

Limitacoes:I :-)

Rui Camacho Programacao 2

Page 12: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Exemplo

Problema:

quero enviar um ramo de flores a minha mae que mora numa outracidade

Solucao:

vou a minha florista (donaFlor) e digo-lhe “envie um ramo de rosasa Sra ... que mora em ...”

(do livro “An introduction to Object-Oriented Programming” - Timothy Budd)

Rui Camacho Programacao 2

Page 13: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Perspectiva O.O. do exemplo

I para desencadear uma accao transmito uma mensagem a umagente (objecto)

I a accao e iniciada pela recepcao de uma mensagem

I a mensagem tem um receptor e pode ter argumentos: tipo deflores, nome do destinatario, morada

I uma vez aceite a mensagem e da responsabilidade do receptorrealizar a accao

I desconheco os pormenores que o receptor usa para realizar aaccao (encapsulamento)

Rui Camacho Programacao 2

Page 14: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Perspectiva O.O. do exemplo (cont.)

I assumo caracterısticas e comportamentos tıpicos da categoria(Florista) a que pertence a instancia (donaFlor)(instanciacao)

I assumo ainda caracterısticas de categorias mais gerais (ex:Vendedores) das quais as Floristas sao uma categoriaparticular. (heranca)

I a realizacao da tarefa pela donaFlor pode envolver outrosagentes (objectos)

Rui Camacho Programacao 2

Page 15: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Classes

Especificacao de caracterısticas (propriedades e comportamentos)comuns a um conjunto de indivıduos.(do livro “Object-Oriented Analysis and Design - Grady Booch)

Rui Camacho Programacao 2

Page 16: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Classes e Objectos

(do livro “Object-Oriented Analysis and Design - Grady Booch)

Rui Camacho Programacao 2

Page 17: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Classes e ObjectosAnalogia

C Javatypedef struct{ class Pessoa{char nome[80]; int idade;

definicao int idade;} Pessoa; public Pessoa(){

int = 0;}}

automatica Pessoa pessoa1; int inteiro;criacao a pedido pessoa2 = pessoa =

(Pessoa *) malloc( ... ); new Pessoa();

Rui Camacho Programacao 2

Page 18: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Encapsulamento

Esconde os detalhes de implementacao de um objecto(do livro “Object-Oriented Analysis and Design - Grady Booch)

Rui Camacho Programacao 2

Page 19: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Encapsulamento

Capacidade de isolar dados e/ou porcoes de codigo.Vantagens:

I facilidade de desenvolver programas estruturados

I nao e preciso “memorizar” e/ou verificar utilizacoes anteriores dosnomes de variaveis e procedimentos

Desvantagens:

I Eficiencia

Rui Camacho Programacao 2

Page 20: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Abstraccao

Abstraccoes formam uma hierarquia(do livro “Object-Oriented Analysis and Design - Grady Booch)

Rui Camacho Programacao 2

Page 21: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Abstraccao

Abstraccao foca as caracterısticas essenciais dos objectosrelativamente a perspectiva do observador

(do livro “Object-Oriented Analysis and Design - Grady Booch)

Rui Camacho Programacao 2

Page 22: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Abstraccao

Capacidade de encapsular e isolar informacao de design deinformacao de execucao.Vantagens:

I reutilizacao de software

I desenvolvimento mais rapido de software

Desvantagens:

I Eficiencia (alguns compiladores de linguagens imperativas fazem“inlining”)

Rui Camacho Programacao 2

Page 23: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Heranca

Princıpio que permite que conhecimento de uma categoria maisgeral que a categoria de um indivıduo seja acessıvel a esseindivıduo.Vantagens:

I evita replicacao de informacao (codigo e dados)

I desenvolvimento mais rapido de software

Desvantagens:

I Eficiencia

Rui Camacho Programacao 2

Page 24: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Polimorfismo

Propriedade de utilizar o mesmo codigo para processar objectosdiferentes.Vantagens:

I Tratamento uniforme de entidades de natureza diferente masrelacionada (ex: biblioteca com livros, revistas, jornais ...)

I mais facil actualizacao/manutencao de software

Rui Camacho Programacao 2

Page 25: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Evolucao Hitorica I

Sistemas de Primeira geracao, inıcio da segunda. Dados globais esub-programas.

(do livro “Object-Oriented Analysis and Design - Grady Booch)

Rui Camacho Programacao 2

Page 26: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Evolucao Hitorica II

Sistemas do final da Segunda geracao inıciop daterceira.Parametros. Programacao estruturada.

(do livro “Object-Oriented Analysis and Design - Grady Booch)

Rui Camacho Programacao 2

Page 27: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Evolucao Hitorica III

Sistemas de Terceira geracao. Modulos independentes compiladosseparadamente.

(do livro “Object-Oriented Analysis and Design - Grady Booch)

Rui Camacho Programacao 2

Page 28: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Evolucao Hitorica IV

Sistemas de OO pequenos. Modulos com dados e procedimentos.(do livro “Object-Oriented Analysis and Design - Grady Booch)

Rui Camacho Programacao 2

Page 29: Conceitos de Programa˘c~ao Orientada por Objectosprog2/docs/programacaoOO.pdf · I desenvolvimento mais r apido de software ... Programa˘c~ao estruturada. (do livro \Object

Conceitos de Programacao Orientada por Objectos

Evolucao Hitorica V

Grandes sistemas OO. Escalabilidade.(do livro “Object-Oriented Analysis and Design - Grady Booch)

Rui Camacho Programacao 2