420 likes | 532 Views
Linguagem de Programação III Programação Orientada a Objetos Unidade I. Prof. Hugo Sampaio São Luís, MA. O que é POO ?. A POO ( Programação Orientada a Objeto ), baseia-se no uso de objetos ( tudo é tratado como um objeto ) definidos em sua respectiva classe.
E N D
Linguagem de Programação IIIProgramação Orientada a ObjetosUnidade I Prof. Hugo Sampaio São Luís, MA
O que é POO ? • A POO (Programação Orientada a Objeto), baseia-se no uso de objetos (tudo é tratado como um objeto) definidos em sua respectiva classe. • Objetos possuem propriedades e características e interagem entre si por meio de mensagens. Porque POO ?.
O Paradigma da POO • A programação orientada a objetos surge para possibilitar aos desenvolvedores : • Velocidade na prototipagem de sistemas; • Ambiente de desenvolvimento perfeito; • Reutilização de códigos; • Modularidade no desenvolvimento • Abstração do mundo real.
O Paradigma da POO • A POO propõe um certo relacionamento entre dados e códigos que surge como representação fiel dos objetos do mundo real. • Desta forma, é importante observar que na POO dados e código, caminham juntos surgindo a idéia de um único corpo. Assim os “Objetos encapsulam dados e códigos” • Porém, é importante lembrar que embora tratados de forma igual, apenas os códigos de um objeto pode manipular os seus dados.
Objetivo da POO • Alem de um desenvolvimento mais fácil, a POO tem como objetivo : • Combinar dados e códigos encapsulados em uma entidade que representa um determinado tipo na abstração das informações no contexto do desenvolvimento.
Objetivo da POO • A POO propõem uma nova maneira de conceber programas, pela introdução de novos conceitos e características, tais como: Objetos, Classes, Instanciação, Encapsulamento, Herança, Polimorfismo, etc.
Linguagens de Programação OO Ling. Orientadas a Objeto (LPOO) • A LPOO introduz novos conceitos e características, tais como: • Objetos, • Classes, • Instanciação, • Encapsulamento, • Herança, • Polimorfismo, etc. Linguagem de Programação Ling. convencionais (LC)
Surgimento da POO • Influenciados pela Linguagem SIMULA (anos 60), derivada do ALGOL e desenvolvida no Centro Norueguês de Computação, por Kristen Nygaard e Ole-Johan Dahl,os cientistas do Xerox Palo Alto Research Center (PARC) iniciou um trabalho que resultou na linguagem SmallTalk. • A SmallTalk (anos 70), foi a primeira linguagem autêntica orientada a objetos. • Cada elemento do SMALLTALK é tratado como sendo um objeto. Esta linguagem é puramente OO.
Algumas aplicações • Desenvolvimento de Interfaces Gráficas com o Usuário. Principalmente a programação em ambiente do Macintosh Apple, Windows, etc. • Aplicada na Engenharia de Software, Sistemas Distribuídos, Inteligência Artificial, e Banco de Dados. • A POO pode ser estendida para Métodos de Análisede Sistemas e Desenvolvimento de Sistemas.
Conceitos • Objetos • Métodos • Classes • Instanciação • Herança • Polimorfismo • Classes Abstratas
Objetos • POO é definida em torno da noção central de Objeto: O domínio das aplicações é definido em termos de objeto. Os desenvolvedores identificam e descrevem todos os objetos do domínio. • O que é um Objeto ? • Um objeto é uma abstração de um elemento (entidade) do mundo real. É algo que tem um limite bem definido. • Ex. : Um arquivo, • Um gato, um Funcionário,uma cadeira, • Uma conta bancária, etc.
Objetos • Uma definição formal de um objeto é : • Um Objeto é uma entidade lógica que contém dados e código para manipular esses dados. • Cada Objeto tem características particulares que constituem as propriedades deste objeto. • Ex. : A cor da cadeira ( um objeto ) é azul • A altura do jogador (um objeto) é 10
Objetos • Podemos um Objetos é constituido de três partes : • Identificador (OID) – Identificação única do objeto • Dois objetos O1 e O2 são idênticosse possuem o mesmo OID. • Estados (ou Informações) Propriedades e valores atuais para cada uma das Prop. Ex. : Em um objeto CARRO temos : cor = AZUL anoFab = 2004 • Dois objetos são iguais se seus estados são iguais.
Objetos • Comportamento (Ação) • O comportamento de um objeto é o modo como ele age e reage. Ele é definido pelo conjunto de operações que podemos executar no objeto. • As instruções das ações são dadas em procedimentos chamados de métodos de execução dessas ações. • Um método selecionado será aplicado ao objeto para executar a ação desejada.
Métodos • Métodos são conjuntos de operações para verificar e ou manipular as propriedades (estado) de um objeto. • Ex.: Para o objeto CARRO : • getANO() return(anoFab)setCOR (C) cor C
Métodos • Ex. : O Objeto Professor : Interação
Encapsulamento • Os Dados (Estados) e os Métodos (Comportamentos) que manipulam um objeto são agrupados (encapsulados) na mesma entidade (o objeto). • Detalhes de Implementação interna são Escondidos e o acesso ao objeto é feito via a interface do objeto.
Interfaces • Através dos métodos, interagimos com o objeto solicitando e/ou alterando o seu estado interno.Esta é a única forma de interagirmos com o interior do objeto. • Isto nos dá uma idéia de “caixa preta” , ou seja a forma como os dados são trabalhados internamente, não tem muito significado para o usuário e sim o resultado da ação solicitada. • Para interagimos com o objeto e este como o mundo externo, utilizamos um conjunto de metodos que representa a interface do objeto
Interface Interface: É o conjunto dos métodos do objeto.A Interface permite um alto grau de abstração. Ela especifica a interação do objeto com o mundo externo. OBJETO Interface INTERACAO COM O MEIO
Mensagens • Os objetos são solicitados a executar algo através de mensagens. • As Mensagens são sincronizadas: O método que está enviando a mensagem não é executado até que o método que executa a mensagem termine. Mensagens OBJETO
Classes • Os objetos são diferentes um dos outros pelas suas características (propriedades e metodos). • Os objetos podem ser classificados por características, . • Para gerarmos um objetos, necessitamos dizer quais as suas características e portanto nos baseamos em um determinado “molde”. • A esse “molde” chamamos na POO de Classes do Objeto.
Classes • A Classe é, portanto, a descrição de uma família de objetos que tem a mesma estrutura (propriedades)e o mesmo comportamento (método). • Uma classe possui dois componentes: • Componente Estático : Dados e Componente Dinâmico : Procedimentos (Métodos) • A classe é uma entidade conceitual que descreve o objeto. Sua definição serve como um modelo para a construção da sua representação física.
Classes • O objeto Homem,(por exemplo), pode ser “moldado” pela classe pessoa. • Uma cadeira pela classe moveis. • Um fusca pela classe carro, etc. • Desta forma uma classe pode gerar vários objetos, tendo todos eles as mesmas características. • Na POO definimos as classes dos objetos e utilizamos estas classes para gerar objetos. Um objeto gerado será conhecido como uma Instância da Classe geradora.
CLASSE P P3 P2 P1 Instâncias Onde : P – Classe do Objeto P P1,P2,P3 – Instâncias da classe P (Objetos) Obs. : Cada instância da classe P terá seus próprios dados independente dos outros.
Resumo • Objeto É uma entidade fechada que possui dados (características) e métodos (operações ou ações). • Método É uma sub-rotina interna no objeto que informa como executar uma ação. • Classe É um recipiente para construir objetos. Ela sabe as variáveis que estão no objeto e detém os métodos para cada objeto.
Resumo • Instância • É um objeto que detém os dados e a referência (ponteiro) para as classes . A referência é importante, já que a classe possui os métodos. • Mensagem • Perguntar a um objeto alguma coisa é chamado de: “envio de mensagem.” Isto é similar a solicitar uma sub-rotina.
Herança • Objetos definidos pela mesma classe, pode apresentar um comportamento especifico. • Observe : • Se temos a classes : Moveis • Esta classe pode instanciar uma cadeira e uma mesa, porém a propriedade : Num de gavetas não se aplica aos dois objetos. Apenas a mesa. • Assim como fazer para instanciar objetos com atributos diferentes de um mesma classe ?
Herança • Uma forma bastante utilizada na POO esta relacionada com o conceito de herança. • Classes mais especificas são modeladas partindo de uma classe mais genérica e assim “herdando” todo as suas caracteristicas. • No nosso exemplo, teríamos a classe : Moveis (mais genérica) e as sub-classes : CMesa e CCadeira ( cada uma com suas particularidade, podendo assim gerar seus objetos que “herdam” as características mais gerais da classe moveis.
Subclasses / Superclasses • Herança é o mecanismo de transmissão das propriedades de uma classe (a superclasse) para outra (a subclasse). • C2 herda de C1 (C2 é subclasse de C1) • Uma instância de C2 é considerada também umainstância de C1.
Características Herdadas Subclasses / Superclasses
Herança Simples e Herança Multiplas • A relação de herançaliga uma classe a suasuperclasse • O termo Superclasse refere-se a todas as classes, as quais uma classe herda. • Ex.: A Superclasse (do aspirador ) = {Eletrodoméstico, Equipamento} • Em um relacionamento de herança simples, cada classe tem apenas uma superclasse (direta):
Herança Simples e Herança Multiplas • A Herança Múltipla: É o mecanismo que permitecom que a subclasse herde de mais de uma superclasse. • Herança múltipla permite uma melhor organização dos objetos, pois evita redundâncias (de propriedades ede métodos). • No entanto, o seu uso é complicado, já que existe o problema de conflitos.
Polimorfismo • Frequentemente temos a necessidade de redefinir um método herdado dando-lhe um novo código, dependendo das caracteristicas da sua subclasse. • O Polimorfismo é o uso de um único nome para definir varias formas distintas.
Polimorfismo Como fazer para calcular a gratificação, uma vez que para cada tipo de empregado, temos um calculo diferente ?
Polimorfismo • A seleção do método pode ser feita pelo sistema, durante a execução (o dynamic binding). • Seja E o conjunto dos empregados e eum empregado, vamos calcular a gratificação de todos os empregados: • Na PE escrevemos: para cada e em E faça case tipo(e): secretária: gratificação1(e) engenheiro: gratificação2(e) motorista: gratificação3(e) • Na POO escrevemos: para cada eem E do gratificação(e) • Polimorfismo é um poderoso mecanismo para compartilhar e reutilizar o conhecimento.
Gen. isa Esp. Representação nos Grafos • Generalização (entre classes : a herança) • - generalização • - especialização • Instanciação ( entre Objetos e Classes ) • - instance-of • Agregação (entre objetos) • - part-of
Metaclasse • Metaclasses:Uma classe geradora de outras classes. Ela agrupa métodos aplicados a uma classe e a estrutura comum de dados de todas as classes. • Ex.: métodos aplicados à classe: • - Criação e destruição de instâncias; • Para evitar a regressão ao infinito na criação de metaclasses, a noção da classe e da metaclasse foi generalizada a uma classe: a classe Object.
Metaclasse • Desta forma todo objetos descende da classe Object. • A classe Object torna-se a raiz do gráfico de herança (isa), e fornece as propriedades comuns dos objetos, tais como : OID, o método new (objeto), o método delete (objeto), etc.
Classes Abstratas • São Superclasses que não geram instâncias. • Elas apenas definem métodos (chamados de protocolos) que todas as subclasses devem implementar. • As superclasses abstratas são geralmente incompletas. • Classes Abstratas são uma convenção útil, mas não são comuns a todas as LPOO.
O Desenvolvimento OO • Defina uma hierarquia de concepção, fazendo primeiro as abstrações. (identifique as classes) • Defina o protocolo de classes: O que a classe faz e como ela faz? • Defina o estado, o dado.- Estado visível: no qual o dado é conhecidofora do objeto. • - Estado escondido: no qual o dado não é conhecido fora do objeto.
Obj. Empregado Obj. Pintor O Desenvolvimento OO
Exercício • O que é um objeto ? • O que é uma classe ? • Defina o conceito de encapsulamento. • Explique o que é herança na POO. • Dê exemplo real de Classes, objetos e Herança • Defina a concepção de um aplicativo qualquer abstraindo todo o contexto baseado nos conceitos da Orientação a Objeto.