Linguagem de Programação III Programação Orientada a Objetos Unidade I

Slides:



Advertisements
Apresentações semelhantes
Análise e Projeto Orientado a Objetos
Advertisements

Desenvolvimento de aplicativos Orientados a Objetos: Definição e Características THIAGO IDEALI.
Interação entre objetos
UML – MODELAÇÃO DA ESTRUTURA Professor Sandro Carvalho.
Diagramas de Seqüência
Análise Orientada a Objetos
Orientação a Objetos: Encapsulamento e Classificação
Modelagem Orientada a Objetos
Orientação a Objetos: Encapsulamento e Classificação
Resolução.
Orientação a Objetos Introdução. Objetos: o que são? Olhando o mundo real pode-se ver vários objetos: mesa, cadeiras, alunos, professores etc. Esses objetos.
Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones.
Análise Orientada a Objetos
1 MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) BREVE HISTÓRICO CARACTERÍSTICAS CONCEITOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS MODELAGEM DE ANÁLISE E DE.
O Paradigma de Orientação a Objetos
Projeto de Software Orientado a Objetos
Introdução ao paradigma de programação: Orientado a Objetos
FUNÇÃO MODULAR.
AOO - Análise Orientado a Objetos
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Linguagem de Programação II
Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB.
Introdução à Modelagem Conceitual 1. Conceitos Básicos
Programação Orientada a Objetos
Aula 8 Orientação à Objetos
1 MAC 413/5715 – Seminário Prof. Fabio Kon Self: The Power of Simplicity David Ungar and Randall B. Smith OOPSLA 1987 Cristina Fang Eduardo Miyoshi Kasa.
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
Paulo J. Azevedo Departamento de Informática Universidade do Minho
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação Orientada a Objetos
Orientação a Objetos.
TÉCNICAS DE PROGRAMAÇÃO II
Diagramas de Seqüência
DIAGRAMA DE COMPONENTES
Polimorfismo em C#.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Princípios de Orientação à Objetos
Aluno: Mário Monteiro Orientador: Sérgio Soares 1.
Object Oriented Software Construction (MEYER, Bertrand)
Conceitos básicos de orientação a objetos
Linguagens Orientadas a Objeto
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
. Smalltalk HISTÓRICO . Década de 60 – POO . Dynabook (Alan Kay)
Programação Orientada à Objetos
Laboratório de Programação I
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
Métodos de Construção de Software: Orientação a Objetos
Paradigmas da Programação – Semestre 1 – Aula 2 Professores: Eduardo Mantovani Fábio de Paula.
Técnicas de Modelagem para Aplicações em Computação Gráfica
Projeto de Banco de Dados
Orientação a Objetos Parte I
Marcio de Carvalho Victorino
Programação Orientada à Objetos
Princípios de Análise e Projeto Orientados a Objetos com UML
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
Herança em POO Importante:
SISTEMAS DISTRIBUIDOS Aula 4
Aula prática 14 Orientação a Objetos – C++ Parte 2
Programação Orientada à Objetos
Uma perspectiva conceitual sobre a comparação de LPOO´s Bent Bruun Kristenser Kasper Osterbte By Lineu Antonio de Lima Santos.
Paradigmas da Programação – Semestre 2 – Aula 1 Professores: Fábio de Paula Santos Eduardo Mantovani
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos Professor: Cheli Mendes Costa Introdução a Programação Orientada.
Treinamento PHP Módulo 2 PHP Avançado Waelson Negreiros
Introdução a Orientação a Objetos
20/04/2017 Orientação a Objetos 1 1.
Módulo II Capítulo 1: Orientação a Objetos
Características Cor Combustível Num_Portas Potencia Comportamentos Acelerar Feiar Acender farol Dar seta Buzinar Características Cor Combustível Num_Portas.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

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. 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) Linguagem de Programação Ling. convencionais (LC) A LPOO introduz novos conceitos e características, tais como: Objetos, Classes, Instanciação, Encapsulamento, Herança, Polimorfismo, etc.

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álise de 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ênticos se 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 : Dados (Estado ) nome : Roberto departamento : Informática salário : 1.000 Métodos (Comportamento ) dept (): return(departamento) setNome (n): nome  n 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.

Instâncias P1 P2 P3 Onde : P – Classe do Objeto P CLASSE P P1 P2 P3 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 uma instância de C1.

Subclasses / Superclasses Empregado Nome: ID: Salário: Características Herdadas Secretária Nome: ID: Salário: isMae? Engenheiro Nome: ID: Salário: CREA Motorista Nome: ID: Salário: Turno

Herança Simples e Herança Multiplas A relação de herança liga uma classe a sua superclasse 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 permite com 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 e de 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 Empregado Gratificação() Secretária Gratificação() Engenheiro Gratificação() Motorista Gratificação() 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 e um 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 e em E do gratificação(e) Polimorfismo é um poderoso mecanismo para compartilhar e reutilizar o conhecimento.

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 Gen. isa Esp.

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 é conhecido fora do objeto. - Estado escondido: no qual o dado não é conhecido fora do objeto.

O Desenvolvimento OO Class CEmpregado Class CPintor extende CEmpregado Nome: ID: Salário: GetNome() getIdade() getSalario() setSalario() setNome() ... Obj. Empregado Class CPintor extende CEmpregado Especialidade: gratificacao: setGratif() getIdade() ... Obj. Pintor

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.