Conceitos de Programacao Orientada por Objectos
Conceitos de Programacao Orientada por Objectos
Rui Camacho Programacao 2
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Conceitos de Programacao Orientada por Objectos
Classes e Objectos
(do livro “Object-Oriented Analysis and Design - Grady Booch)
Rui Camacho Programacao 2
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
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
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
Conceitos de Programacao Orientada por Objectos
Abstraccao
Abstraccoes formam uma hierarquia(do livro “Object-Oriented Analysis and Design - Grady Booch)
Rui Camacho Programacao 2
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
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
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
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
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
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
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
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
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