O que significa ser Orientado a Objeto?

Slides:



Advertisements
Apresentações semelhantes
Orientação a objetos identidade abstração classificação encapsulamento
Advertisements

Análise e Projeto Orientado a Objetos
Paulo Marques Hernâni Pedroso
Introdução à Programação Orientada à Objetos Prof. Daniel Merli Lamosa Maio de 2002.
Diagrama de Classes.
Algoritmos e Estrutura de Dados I
Diagramas de Seqüência
Modelagem Orientada a Objetos
Orientação a Objetos: Encapsulamento e Classificaçã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.
Análise Orientada a Objetos
Projeto de Software Orientado a Objetos
Orientação a objetos Objetos ou Instâncias Métodos ou Mensagens
Padrões GoF – Factory Method
Introdução ao paradigma de programação: Orientado a Objetos
Introdução a diagrama de classes e UML
Linguagem de Programação II
Análise e Projeto Orientados a Objetos
Engenharia de software OO1 Engenharia de Software Orientada a Objetos.
Testes e Métricas Orientados a Objetos
Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB.
Engenharia de Requisitos Requisito – sistema Caso de uso - usuário
Classes e objetos P. O. O. Prof. Grace.
Análise e Projetos de Sistemas UML-Linguagem de Modelagem Unificada Modelo de Dados com UML Diagrama de Classes Professor: Armando Hage.
TÉCNICAS DE PROGRAMAÇÃO II
JAVA: Conceitos Iniciais
Encapsulamento e Congeneridade
Aula prática 6 Vetores e Matrizes
Conceitos básicos de orientação a objetos
Linguagem de Montagem.
Linguagem de Programação II Parte IX
DIAGRAMA DE CLASSE Modelagem de Software
. Smalltalk HISTÓRICO . Década de 60 – POO . Dynabook (Alan Kay)
Expansão dos Casos de Uso
Programação Orientada à Objetos
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
Aula 3 CoL, atividade Polimorfismo (late binding) Modificador final Modificador abstract Interfaces Herança múltipla Atribuição, Construtores, Destrutores,
Métodos de Construção de Software: Orientação a Objetos
Linguagem de Programação JAVA
Paradigmas da Programação – Semestre 1 – Aula 2 Professores: Eduardo Mantovani Fábio de Paula.
Classes, Objetos, Atributos e Métodos JAVA
Professor: Márcio Amador
Orientação a Objetos Parte I
Programação Orientada à Objetos
Análise Léxica.
Análise e Projeto de Sistemas
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
UML Diagrama de classes.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Herança em POO Importante:
SISTEMAS DISTRIBUIDOS Aula 4
Aula prática 14 Orientação a Objetos – C++ Parte 2
Modelagem de Entidade/Objetos de Domínio com Diagrama de Classes
Orientação a Objetos usando Java
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 7. Análise e projeto orientados a objetos 7.1 Técnica de modelagem.
Aula Prática 4 Monitoria IP/CC (~if669).
Análise e Projeto de Sistemas
Paradigmas da Programação – Semestre 2 – Aula 1 Professores: Fábio de Paula Santos Eduardo Mantovani
Paradigmas de Programação –Aula 7 Lab 2 Professores: Eduardo Mantovani Fábio Paula Santos.
Conceitos de Orientação a Objetos zConceito de tipo zTipos Abstratos de Dados zMódulos/Pacotes zEncapsulamento.
Expansão dos Casos de Uso
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
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Características Cor Combustível Num_Portas Potencia Comportamentos Acelerar Feiar Acender farol Dar seta Buzinar Características Cor Combustível Num_Portas.
Fundamentos de Engenharia de SW Diagramas da UML Usados no Projeto de Software.
Desenvolvendo sotfware com UML1 Visão Geral de Orientação a Objetos.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

O que significa ser Orientado a Objeto? o que é OO

Conceitos básicos: Encapsulamento Ocultação de informações e implementações Retenção de estado Identidade de objeto Mensagens o que é OO

Classes Herança Polimorfismo Generalização o que é OO

Exemplo: Hominóide se movendo num tabuleiro! F o que é OO

Regras: Ir da posição I até F Andar em linha reta ou ‘curvas’ de 90o Passa por todos os quadrados Não bater nas paredes (pareceria idiota) Classes já existentes: grade e homonóide o que é OO

Interface do ‘Hominóide’: Novo: Hominóide // cria uma nova instância virarÀesquerda //vira o Hominóide no sentido anti-horário em 90o virarÀdireita //vira o Hominóide no sentido horário // em 90o o que é OO

… avançar (semPularQuadrados: Inteiro, out avançarOK: boolean) // mover o hominóide vários // quadrados no sentido apontado e // retornar OK se bem-sucedido posição: Quadrado // retorna o quadrado atual apontandoParaParede: Booleano // informa se o hominóide vai bater o que é OO

Interface da ‘Grade’: Novo: Grade // cria e retorna uma grade com um // padrão ao acaso iniciar: Quadrado // retorna o quadrado de início finalizar: Quadrado // retorna o quadrado final o que é OO

… inserirHominóide (hom: Hominóide, posição: Quadrado, out inserirOK: Booleano) // posiciona o hominóide na grade // determinada e na posição // especificada e retorna ok exibir // mostra a grade como um padrão // sobre a tela o que é OO

Programa OO: var grade: Grade := Grade.Novo; var hom1: Hominóide := Hominóide.Novo; var inserirOK: Booleano; var avançarOK: Booleano; var iniciarQuadrado: Quadrado; const umQuadrado = 1; o que é OO

… iniciarQuadrado := grade.iniciar; grade.inserirHominóide (hom1, iniciarQuadrado, out inserirOK); if not inserirOK then aborte tudo!; endif; o que é OO

… // posiciona hominóide no sentido correto repeat 4 times max or until not hom1.apontandoParaParede hom1.virarÀEsquerda; endrepeat; grade.exibir; hom1.exibir; o que é OO

… repeat until hom1.posição = grade.finalizar if hom1.apontandoParaParede then hom1.virarÀEsquerda; then hom1.virarÀDireita; hom1.virarÀDireita; endif; hom1.avançar (umQuadrado, out avançarOK); hom1.exibir; endrepeat; o que é OO

1. Encapsulamento “… é o agrupamento de idéias afins em uma unidade, conceito esse que pode ser informado em uma única palavra” Conceito de sub-rotina é um encapsulamento de instruções! o que é OO

Encapsulamento OO: “… é o pacote de operações e atributos o qual representa o estado em um tipo de objeto, de tal forma que o estado é acessível ou modificável somente pela interface provida pelo encapsulamento” o que é OO

Objeto hominóide: hom1 Operações Atributos virarÀEsquerda exibir posição sentido virarÀDireita apontandoParaParede avançar posição o que é OO

Visibilidade das operações e atributos: Públicos Privados a menos que explicitamente mencionado, as operações e atributos são considerados privados o que é OO

2. Ocultação de informações e implementações “… é a utilização do encapsulamento para restringir a visibilidade externa de certos detalhes de informações ou implementações, os quais são internos à estrutura de encapsulamento” o que é OO

- sentido permanece oculto! Frequentemente: Revela informações Oculta implementações Por exemplo: - a operação posição informa a posição, mas não sabemos como é armazenada internamente! - sentido permanece oculto! o que é OO

Benefícios da ocultação: Localiza as decisões de desenho Desacopla o conteúdo das informações da sua forma de representação o que é OO

3. Retenção de Estado Um objeto “memoriza” o seu estado (conjunto de valores que caracterizam a sua situação anterior/atual) Por exemplo: o hominóide, constantemente, ‘sabe’ a sua posição e sentido de deslocamento (mecanismo interno!). (sub-rotinas convencionais não possuem memória de suas execuções anteriores) o que é OO

4. Identidade de Objeto “… é a propriedade pela qual cada objeto (independentemente de sua classe ou seu estado) pode ser identificado e tratado como uma entidade distinta de software” o que é OO

Objeto hominóide: hom1 Objeto virarÀEsquerda exibir posição sentido virarÀDireita apontandoParaParede avançar posição 820657 Identificador do Objeto o que é OO

var hom1: Hominóide := Hominóide.Novo; Regras básicas: O mesmo identificador permanece com o objeto por toda sua “vida” Dois objetos nunca podem ter o mesmo identificador hom1 aponta para o ID (820657) o que é OO

Atribuindo um objeto a outro: var hom2: Hominóide := hominóide.Novo; // ID: 176290 hom1 := hom2; // ID ?? hom1 e hom2 passam a apontar para o mesmo objeto (hom1 desapareceu! – “coletor de lixo” deve remover o espaço ocupado) o que é OO

5. Mensagens “Uma mensagem é o veículo pelo qual um objeto remetente obj1 transmite a um objeto destinatário obj2 um pedido para o obj2 aplicar um de seus métodos.” Obs: O obj2 pode ser o próprio obj1 o que é OO

Estrutura da mensagem: O identificador do obj2 (o obj1 normalmente deve armazenar o ID do obj2!) O nome da operação do obj2 que o obj1 deseja executar Informações suplementares (argumentos) que o obj2 necessitar para a execução de sua operação o que é OO

Remetente / cliente : objeto que envia a mensagem Destinatário / servidor (serviço) : objeto que recebe a mensagem Ex: hom1.virarÀDireita; [call virarÀDireita (hom1);] o que é OO

Estrutura da mensagem: Assinatura da operação alvo: Nome da operação Lista de argumentos de entrada Lista de argumentos de saida (retorno) hom1.avançar (in semPular, out avançarOK); objeto arg de saída nome arg entrada mensagem o que é OO

Papéis dos objetos em mensagens: Remetente de uma mensagem Destinatário de uma mensagem Indicado por uma variável no interior de outro objeto Indicado por um argumento passado por uma mensagem (em linguagem OO pura os argumentos sempre são objetos!) o que é OO

Tipos de mensagens: Informativa – fornece informações a um objeto para que ele se atualize Interrogativa – solicita que um objeto revele alguma informação sobre si próprio hom1.posição Imperativa – solicita a um objeto que faça algo para si, outro objeto ou o meio ambiente hom1.avançar o que é OO

6. Classes Uma classe é a matriz da qual são gerados objetos. Cada objeto tem a mesma estrutura e comportamento da classe que lhe deu origem. Se um obj pertence à classe C, dizemos que “obj é uma instância de C”. o que é OO

obj1 127654 Instanciação Classe obj2 218654 obj3 417287 o que é OO

Classe é o que se desenha e programa Objeto é o que se cria na hora da execução o que é OO

“Memória” ocupada pelos objetos de uma classe C: métodoA varX varX varX varX varX varX varX métodoB varY varY varY varY varY varY varY varZ varZ varZ varZ varZ varZ varZ métodoC varV varV varV varV varV varV varV varW varW varW varW varW varW varW métodoD id id id id id id id o que é OO

Operações e atributos de instâncias de objetos Operações e atributos de classe de objetos Ex: objeto1.Novo o que é OO

Memória ocupada pelos objetos e pela própria classe: Variáveis de classe Objeto 1 Objeto 2 Objeto 3 Objeto 4 Objeto 5 Objeto 6 métodoA varP varX varX varX varX varX varX varQ métodoB varY varY varY varY varY varY varR varZ varZ varZ varZ varZ varZ métodoC varV varV varV varV varV varV métodoE varW varW varW varW varW varW métodoD id id id id id id métodoF Métodos de classe o que é OO

7. Herança A herança é a habilidade que uma classe D possui de usar os atributos e operações de uma classe C, como se os mesmos tivessem sido definidos para ela. C é uma superclasse de D D é uma subclasse de C o que é OO

exemplo: Aeronave Planador desviar seCaboAcoplado: Booleana Rota: Ângulo desviar Planador seCaboAcoplado: Booleana soltarCaboDeReboque o que é OO

8. Polimorfismo Polimorfismo é a habilidade pela qual uma única operação ou nome de atributo pode ser definido em mais de uma classe e assumir implementações diferentes Polimorfismo é a propriedade pela qual um atributo ou variável pode apontar para objetos de diferentes classes em momentos diferentes o que é OO

Exemplo: classe Poligono o que é OO

Exemplo (de A): Polígono Triângulo Retângulo Hexágono Calcular Área … o que é OO

Exemplo (de B): var p: Polígono; var t: Triângulo := Triângulo.Novo; var h: Hexágono := Hexágono.Novo; … If usuário diz OK then p:=t else p:=h endif; o que é OO

9. Generalização Generalização é a construção de uma classe C de forma que uma ou mais classes que ela utiliza internamente é fornecida somente em tempo de execução (quando o objeto da classe C é gerado). o que é OO

Exemplo: Classe ÁrvoreBalanceada <ClasseDoItemNó> … var atualNó: ClasseDoItemNó := ClasseDoItemNó.Nova; atualNó.imprimir; o que é OO