Aula 24 Programação Modular, POO e Padrões de Projeto
|
|
- Alana Bayer Botelho
- 6 Há anos
- Visualizações:
Transcrição
1 Aula 24 Programação Modular, POO e Padrões de Projeto Alessandro Garcia LES/DI/PUC-Rio Junho 2010 Diferenças entre... Módulos (em C) e Classes (Linguagens OO) Classes possuem um operador de instanciação explícito Hierarquia de classes Uso de herança para reuso de estrutura e comportamento C: reuso somente através de chamadas de funções Suporte direto a funções polimórficas (polimorfismo) Destruição de objetos (desalocação de memória) em algumas linguagens OO é feita de forma automática Suporte direto a definição de interfaces... Nov 2009 Alessandro Garcia LES/DI/PUC-Rio 2/ 27 1
2 Interfaces (em Java) Interfaces As interfaces definem assinaturas de conjuntos de métodos, mas não os implementam tem o papel do módulo de declaração (*.h)... mas permite definir interfaces reutilizáveis (p.e. serializable) Interface é uma especificação que permite que classes, não diretamente relacionadas na mesma hierarquia, possam incorporar propriedades similares Uma classe que implemente a interface deve implementar TODOS os métodos definidos nesta public interface Sleeper { public void wakeup(); public long ONE_SECOND = 1000; // milli Nov 2009 Alessandro Garcia LES/DI/PUC-Rio 3/ 27 Diferenças entre... Módulos (em C) e Classes (Linguagens OO) Classes possuem um operador de instanciação explícito Hierarquia de classes Uso de herança para reuso de estrutura e comportamento C: reuso somente através de chamadas de funções Destruição de objetos (desalocação de memória) em algumas linguagens OO é feita de forma automática Suporte direto a definição de interfaces... Linguagens OO: melhor controle de visibilidade (graus de encapsulamento) exemplo: Java... Nov 2009 Alessandro Garcia LES/DI/PUC-Rio 4/ 27 2
3 Visibilidade de membros da classe Controlando o acesso aos membros da classe Especificador classe subclasse pacote todos private X protected X X X public X X X X default X X Nov 2009 Alessandro Garcia LES/DI/PUC-Rio 5/ 27 Pacotes (em Java) Pacotes Para facilitar o uso, controle de acesso e controle de conflito de nomes, os programadores agrupam classes e interfaces relacionadas em pacotes Para definir qual pacote uma classe pertence, basta incluir no início arquivo da classe a linha: package nomepacote; Os pacotes necessários a uma classe devem ser incorporados através do comando import similar ao include Nov 2009 Alessandro Garcia LES/DI/PUC-Rio 6/ 27 3
4 Abstract e Final Métodos Abstract: não possuem implementação e devem ser implementados pelas subclasses classe deve ser definida como abstract quando possuir pelo menos um método abstrato Métodos Final: não podem ser sobrescritos é válido estender uma classe não marcada como final mas não podemos sobrescrever seus métodos final Erro de compilação Nov 2009 Alessandro Garcia LES/DI/PUC-Rio 7/ 27 Membros estáticos de uma classe Métodos e variáveis estáticos Declarados com o especificador static São comuns a todos os objetos da classe Utilizados para declaração de constantes t Utilizados para declaração de métodos que não necessitam de uma instância da classe static int FALSO 0; static int VERDADEIRO 1; public static boolean testa( int p ) { if( p == this.verdadeiro ) return( true ); else return( false ); Nov 2009 Alessandro Garcia LES/DI/PUC-Rio 8/ 27 4
5 Diferenças entre... Módulos (em C) e Classes (Linguagens OO) Classes possuem um operador de instanciação explícito Hierarquia de classes Uso de herança para reuso de estrutura e comportamento C: reuso somente através de chamadas de funções Destruição de objetos (desalocação de memória) em algumas linguagens OO é feita de forma automática Suporte direto a definição de interfaces... Linguagens OO: melhor controle de visibilidade (graus de encapsulamento) exemplo: Java... Suporte direto à funções polimórficas É possível a implementação de funções polimórficas em C? Nov 2009 Alessandro Garcia LES/DI/PUC-Rio 9/ 27 Polimorfismo em C? Função como um dado Uma função definida é uma seqüência de bytes contida em um espaço de dados usualmente contíguo em geral, não alterável constante possui um nome usualmente o nome da função possui um endereço origem de execução nome da função Função de acesso( x, y,..., z ) Meio Endereço do espaço Tamanho Espaço de dados possui também um tipo / 32 5
6 Função como um dado O tipo de uma função é estabelecido pela sua assinatura física valor retornado lista dos tipos de parâmetros os nomes dos parâmetros não fazem parte da assinatura o nome da função não faz parte da assinatura exemplo: int ( int, double ) Uma função A será do mesmo tipo que a função B caso ambas tenham a mesma assinatura programador deve garantir que exista uma igualdade semântica 11 / 32 Dado tipo ponteiro para função Em C e C++ podem ser definidas variáveis do tipo ponteiro para função exemplo: int (* VarF1 )( int, double ) VarF1 é um ponteiro para função do tipo: int ( int, double ) Exemplo de atribuição int Func( int X, double Y ) {... /* Func */ Func é uma constante do tipo ponteiro para uma função do tipo: int ( int, double ) main(...) { VarF1 = Func ; 12 / 32 6
7 Exemplo simples: integração por trapézio Seja f(x) uma função contínua em [a, b] h ITR 2 o problema da integração numérica consiste em calcular um valor aproximado para I b x dx solução: calcular a integral f ( ) limite superior aproximada através da regra dos trapézios f0 2 f1 f2 f3 fm2 fm1 limite inferior i Parâmetros: - número de interações: 8 - limites inferior e superior: 0 e m - e a própria função f Y fm a função a ser integrada Exemplo: f(x) = 2 * x double f A B X Maio 2009 Alessandro Garcia 0 f 1 f LES/DI/PUC-Rio 1 f 2 f 2 f 3 f 3 f m 13 / 32 Exemplo simples: integração /* Função de integração numérica utilizando regra dos trapézios */ double Integrar( double LimInf, double LimSup, int NumInt, double ( * Func )( double X )) { double Integral = 0.0 ; Y double Intervalo ; int i ; assert( NumInt >= 2 ) ; Intervalo = ( LimSup - LimInf ) / ( NumInt - 1 ) ; Integral += Func( LimSup ) ; Integral += Func( LimInf ) ; for ( i = 1 ; i < NumInt - 1 ; i++ ) { Integral += 2 * Func( Intervalo * i ) ; /* for */ Integral *= Intervalo/2; return Integral ; /* Integrar */ h ITR 2 f A B X f1 f2 f3 fm2 fm1 fm 14 / 32 7
8 Exemplo simples: integração, uso /* exemplo de uso */ double Quadrado( double X ) { return X ** 2 ; double Cubo( double X ) { return X ** 3 ; printf( \n F = x ** 2 de x=1 a x=10: %lf, Integrar( 1.0, 10.0, 20, Quadrado )) ; printf( \n F = x ** 3 de x=1 a x=10: %lf, Integrar( 1.0, 10.0, 20, Cubo )) ; 15 / 32 Função como um dado A assinatura pode estar associada a um de vários corpos na hora da chamada é estabelecida a associação da chamada estática (tempo de compilação), caso normal de linguagens procedurais dinâmica (tempo de execução), caso freqüente em linguagens orientadas a objetos Assinatura F( int ) Chama F( float ) Associação da chamada Assinatura *F( float ) Associação dinâmica Associação estática Corpo F( float ) Corpo F( float ) Corpo F ( int ) 16 / 32 8
9 Da aula passada... Para aula de hoje... Objetivos discutir os conceitos de programação orientada a objetos (OO) do ponto de vista de programação modular o que são padrões de projeto? discutir como projetar programas C de forma reusável com padrões de projeto (ex. esquemas de algoritmos, estruturas de cabeças, etc...) discutir como projetar programas OO de forma reusável com padrões de projeto fazem sentido em programação modular em C? 17 / 27 Sumário Introdução à padrões de projeto Padrões de projeto em C Estrutura cabeça Esquemas de algoritmo: Pesquisa Binária Iterador Padrões de projeto OO Singleton Adapter Observer Etc / 27 9
10 Iterador: exemplo de esquema de algoritmo Problema: como seqüencialmente acessar os elementos de um conjunto de dados (ordenado ou não), expondo o mínimo possível da sua representação interna? Solução de projeto: Um iterador (função geradora) é um esquema de algoritmo composto por: tipo tpestado: o descritor (tipo) do estado possivelmente define uma constante: ESTADO_NIL um ou mais tipos tpvalorx que determinam o tipo dos elementos acessados pela correspondente função: tpvalorx ObterValorX( tpestado,...) E.g. indice atual de um valor sendo percorrido valores acessíveis à partir do escritor do estado função tpestado DefinirPrimeiro(... ) função tpestado DefinirProximo( tpestado,... ) função boolean Terminou( tpestado,... ) 19 / 27 Iterador: exemplo pesquisa em tabela Esquema do algoritmo para pesquisa em qualquer tabela tpestado Corrente ; Corrente = DefinirPrimeiro( ValorProcurado ) ; while (!Terminou( Corrente )) { if ( Comparar( ObterValor( Corrente ), ValorProcurado ) == EH_IGUAL ) { return Corrente ; /* if */ Corrente = DefinirProximo(Corrente, ValorProcurado); /* while */ return ESTADO_NIL ; 20 / 27 10
11 Padrões de projeto Servem para resolver problemas/perguntas recorrentes em projeto (e programação) de software Exemplo: como implementar um mecanismo de observação? Estabelecem soluções elegantes para tais problemas definem papéis/participantes (módulos conceituais) a serem implementados soluções não são suportadas diretamente por uma primitiva única da linguagem (p.e. Singleton) provêem exemplos em uma linguagem de programação (p.e. Java) Através de nomes/metáforas, um catálogo de padrões permite estabelecer um idioma entre programadores Comunicação eficiente: Vamos usar o padrão Adapter para Estabelece as conseqüências positivas e negativas de usar aquele padrão: reuso, manutenibilidade, segurança, performance, etc / 27 Padrões de projeto Padrões de problemas Exemplos de padrões de projeto OO: Singleton Strategy Padrões de soluções Adapter Template Method Observer State Vantagem: reuso e manutenibilidade do código genérico dos padrões de um projeto para outro dentro de um projeto, poder have várias instâncias do mesmo padrão História: desde os anos 90, padrões OO em engenharia de software 1995, Gang of Four (Gamma, Helm, Johnson, Vlissides): Design Patterns: Elements of Reusable Object-Oriented Software criação (Singleton), estrutural (Adapter), comportamental (Observer) 22 / 27 11
12 Criação: Padrão Singleton (Objeto Unitário) 1a instanciação Objeto único da classe singleton Classe Singleton Instanciações subsequentes 23 / 27 Padrão Singleton (Objeto Unitário) Uma classe singleton sempre tem uma variável estática privada para manter a instância única Um construtor privado SecurityManager private static SecurityManager uniqueinstance // other attributes private SecurityManager( ) public static SecurityManager getinstance( ) // other methods Um método público estático para invocar o construtor privado se uniqueinstance é null; caso contrário, retorna uniqueinstance 24 / 27 12
13 Padrão Strategy (Estratégia) Encapsula variantes de um algoritmo relacionados em classes que são subclasses de uma classe comum Permite a seleção de algoritmo variar por objeto e também no decorrer do tempo estratégias podem variar de forma independente de clientes evita tornar complexa a classe contexto com diferentes algoritmos (e respectivas estruturas de dados) para o mesmo propósito Forma Geral: Java: pode ser uma classe abstrata ou interface 25 / 27 Padrão Estratégia Exemplo 1 qual padrão/conceito poderia ser usado em combinação com o padrão Estratégia? número de métodos abstratos pode variar de aplicação para aplicação 26 / 27 13
14 Padrão Estratégia Exemplo 2 número de métodos abstratos pode variar de aplicação para aplicação 27 / 27 Padrão Estratégia Exemplo 2 public class BubbleSort implements SortStrategy { public void sort(double[] list) { double temp; for(int i = 0; i < list.length; i++) { for(int j = 0; j < list.length - i; j++) { if(list[i] < list[j]) { temp = list[i]; list[i] = list[j]; list[j] = temp; 28 / 27 14
15 Padrão Estratégia Exemplo 2 public class QuickSort implements SortStrategy { public void sort(double[] a) { quicksort(a, 0, a.length - 1); private void quicksort(double[] a, int left, int right) { if (right <= left) return; int i = partition(a, left, right); quicksort(a, left, i-1); quicksort(a, i+1, right); private int partition(double[] a, int left, int right) { ; 29 / 27 Padrão Estratégia Exemplo 2 Sorting Client public class SortArray { Context private SortStrategy sorter = null; public void sortdouble(double[] list) { sorter.sort(list); public SortInterface getsorter() { return sorter; public void setsorter(sortstrategy sorter) { this.sorter = sorter; public class SortingClient { public static void main(string[] args) { double[] list = {1,2.4,7.9,3.2,1.2,0.2, ; SortArray context = new SortArray(); context.setsorter(new BubbleSort()); context.sortdouble(list); for(int i =0; i< list.length; i++) { System.out.println(list[i]); context.setsorter(new QuickSort()); context.setsorter(new InsertionSort()); 30 / 27 15
16 Padrão Estratégia Conseqüências Benefícios evolução modular das estratégias permite facilmente a troca dinâmica das estratégias para o mesmo contexto qual mecanismo de OO permite isso? é possível em C? desvantagens aumenta o número de objetos pode ter um efeito negativo sobre performance devido a criação de objetos para cada troca de estratégia todos algoritmos devem em usar a mesma interface Strategy nem sempre é natural ou possível 31 / 27 Comportamental: Padrão Observer Observadores Sujeito Observado - Sujeito é independente dos observadores - Observadores são atribuidos dinamicamente aos observados - Sujeito informa observadores sobre suas mudanças de estado 32 / 27 16
17 Comportamental: Padrão Observer variantes: uso de interfaces ou classes abstratas 33 / 27 Padrão Observer O Padrão Observer paper subject : elemento do sistema sendo observado mantém referências para os observadores notifica os observadores que mudanças ocorreram <<interface>> Subject addobserver removeobserver notify Figure 1 FigureElement * <<interface>> Observer update * * Members exclusively dedicated to the pattern Point observers getx gety getcolor addobserver removeobserver notify setx sety setcolor Line observers getp1 getp2 getcolor * addobserver removeobserver notify setp1 setp2 setcolor Screen update Display Methods including some code relative to the pattern * 34 / 27 17
18 Estrutural: Padrão Adaptador A função de um adaptador é tornar possível a conexão de dois objetos: a tomada e o plugue de diferentes países converte a interface de uma classe (A) em outra interface (B) que clientes (C) conhecem Classes adaptadoras permitem duas classes (com interfaces originalmente incompatíveis) interagirem provided interface classe (componente) existente (funcionalidade externa) objeto cliente Tomada Alemã required interface A B C Adaptador Plugue UK 35 / 27 Padrão Adapter (Adaptador) Permite que uma aplicação utilize funcionalidades externas Uma classe Adapter implementa uma interface conhecida dos clientes e permite acesso a instâncias de uma classe não conhecida dos clientes. Exemplo: Writer <<inteface>> adaptado SystemOutPrinter printtosystemout(string s) Client writerobject.write() write () adaptador PrinterAdapter adaptee write() 36 / 27 18
19 Aula 24 Programação Modular com Padrões de Projeto Alessandro Garcia Alessandro Garcia LES/DI/PUC-Rio Junho
Aula 23. Programação Orientada à Objetos vs. Programação Modular
Aula 23 Programação Orientada à Objetos vs. Programação Modular Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Barbara Liskov, CLU Turing Award 2008 Aula de hoje... Objetivos discutir os conceitos básicos
Leia maisPadrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões
DCC / ICEx / UFMG Padrões de Projeto Padrões de Projeto Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Um padrão é uma descrição do problema e a essência da sua solução Documenta boas soluções para
Leia maisTópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico
Reuso de Software Aula 03 Tópicos da Aula POO e Padrões de Projetos Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com 12 Março 2012 Programação orientada a objetos Reuso de
Leia maisProgramação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos
Programação Orientada a Objetos Vagner Luz do Carmo - Vluzrmos Questão 1 Dada a seguinte classe na linguagem JAVA: public class Carro { public String retornacor(){ ; return Azul ; private String retornachassi(){
Leia maisClasses e Objetos. Sintaxe de classe em Java
Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados
Leia maisLinguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos
Linguagem de Programação II Programação Orientada a Objetos Orientação a Objetos Prof. Alessandro Borges 2 Tópicos Introdução à Programação Orientada a Objetos Conceitos Objetivos Classes e Objetos Atributos
Leia maisClasse Abstrata e Interface
Orientação a objetos com Java Classe Abstrata e Interface Byron Leite byron.leite@gmail.com 1 Herança Agenda Geral Parte 04 Encapsulamento Pacotes Modificadores de Acesso private, default, protected, public
Leia maisParadigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
Leia maisOrientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento
Orientação a objetos Programação Orientada a Objetos Alexandre César Muniz de Oliveira Linguagens orientadas a procedimentos e linguagens orientadas a objetos Unidade de programação: funções e classes
Leia maisTipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Leia maisTipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Leia maisRecapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }
Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação
Leia maisOrientação a Objetos e Java
Orientação a Objetos e Java Daves Martins davesmartins@yahoo.com.br Mestre em Computação de Alto Desempenho pela UFRJ Especialista em Banco de Dados Analista Web Orientação a Objetos e Java Características
Leia maisLinguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa
Leia maisINF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS
INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 17 Padrões de Design Singleton Facade Factory Method Observer Strategy
Leia maisLinguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces
Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Professora Sheila Cáceres Polimorfismo Polimorfismo Polimorfismo é a característica única de linguagens orientadas
Leia maisProgramação Orientada a Objetos em Java
Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Classes e Objetos, Construtores e Desconstrutores, Atributos e
Leia maisPalavras Reservadas da Linguagem Java
Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de
Leia maisAnálise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 05 Padrões GoF (Singleton e Iterator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
7 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisProgramação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III
Programação Orientada a Objetos Alexandre César Muniz de Oliveira Métodos e Atributos Parte III Métodos [mod] tipo nome ([tipo arg]) [throws exc]{ [mod]: zero ou mais modificadores separados por espaços
Leia maisProgramação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs
Programação Orientada a Objetos Professor: André Luis Meneses Silva andreluis.ms@gmail.com br.geocities.com/programacao2ufs [ Conteúdo ] Objeto Mensagens Classe Encapsulamento Visibilidade Membros de Instância
Leia maisLinguagem de Programação Orientada a Objeto Abstração - Encapsulamento
Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento Professora Sheila Cáceres Variáveis locais Campos são um tipo de variável. Eles: armazenam valores por toda a vida de um objeto; e
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem
Leia maisUNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS
Data final de entrega 16/09/2014, até às 23h59min Enviar o arquivo de respostas em formato PDF e o arquivozip com códigos fontes para o e-mail motafernandomaia@gmailcom, insira no assunto do e-mail [Lista
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisINF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS
INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores e Blocos de Inicialização
Leia mais9 Classes Abstractas e Interfaces
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisConceitos de Programação Orientada a Objetos
Conceitos de Programação Orientada a Objetos Tatyana Bitencourt Com as técnicas de orientação a objeto, é possível obter resultados considerados impossíveis pensando de maneira estruturada. Como Java não
Leia maisMas o que é mesmo Padrão de Projeto?
Mas o que é mesmo Padrão de Projeto? Um Padrão de Projeto descreve uma solução comprovada para um problema recorrente e conhecido no desenvolvimento de software orientado a objetos. Mas afinal, porque
Leia maisProfa. Thienne Johnson
Profa. Thienne Johnson 1 E. Gamma and R. Helm and R. Johnson and J. Vlissides. Design Patterns - Elements of Reusable Object-Oriented Software. Addison- Wesley, 1995. Os padrões comportamentais se preocupam
Leia maisINF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS
INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Andrew Diniz da Costa andrew@les.inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores
Leia maisAnálise de Programação
Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou
Leia maisLinguagem de Programação IV Introdução
Linguagem de Programação IV Introdução Prof. Alessandro Borges 2 Tópicos Orientação a objetos Classe Objeto Abstração Encapsulamento Herança Polimorfismo Plataforma Java 3 4 POO é um paradigma de programação
Leia maisParadigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto
Suporte para Programação Orientada a Objeto Cristiano Lehrer Categoria das Linguagens que Suportam POO Suporte a POO acrescentado a uma linguagem já existente: C++ (também suporta programação procedural
Leia maisPROGRAMAÇÃO ORIENTADA A OBJETOS JAVA
PROGRAMAÇÃO ORIENTADA A OBJETOS JAVA PÁTIO DE MATERIAIS Discente: Nielson Soares Disciplina: Algoritmo e Estrutura de Dados INTRODUÇÃO Orientação a objetos. Linguagem de programação JAVA. Pátio de matérias
Leia maisSingleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)
e Adapter Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé) O que vimos na última aula? Factory Method Abstract Factory 2 O que veremos hoje? (padrão de criaçã) Adapter
Leia maisProgramação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos
Programação com Objectos Processamento de Dados I 2. Classes, Atributos e Métodos 1 Classes, Atributos e Métodos Modificadores de acesso (visibilidade) Sobrecarga de métodos (method overloading) Variáveis
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Breakout Componentes do Breakout Bola Raquete Tijolos Paredes Score Nem todos vão precisar de classes próprias
Leia maisUNIFEI Disciplina Professor
UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO02 Enganharia de Software II Enzo Seraphim Nota de aula de Java Encapsulamento
Leia maisInterfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.
Interfaces Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Interfaces É utilizada para agrupar conceitos em
Leia maisEngenharia de Software
Engenharia de Software Projeto e Implementação Padrões de Projeto Msc. Carlos Mar 04/2014 REVISÃO: ORIENTAÇÃO A OBJETOS Msc. Carlos Mar - Abr/2014 Conceitos Fundamentais Classe Objeto Atributos Métodos
Leia maisLista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }
Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos
Leia maisJava First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.
Java First-Tier: plicações Orientação a Objetos em Java (III) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Herança: Simples Múltipla O tipo de herança que usamos até agora é chamado
Leia maisInstituto Federal de Educação, Ciência e Tecnologia do Ceará IFCE Programa Educacional Brasileiro de Desenvolvimento para ios BEPiD PROVA OBJETIVA
Instituto Federal de Educação, Ciência e Tecnologia do Ceará IFCE Programa Educacional Brasileiro de Desenvolvimento para ios BEPiD PROVA OBJETIVA 01) A negação de eu não gosto de acordar cedo e eu sou
Leia maisClasses e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II Classes e Objetos Objetos Um conjunto de estados e comportamentos Classes Um modelo para a criação de objetos 1 Pacotes e Java API Pacotes Um conjunto
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Revisão Classes e Objetos Classes são uma das unidades básicas de um programa Java Usamos as classes para
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos luno: ata: Professor: Leonardo abral da Rocha Soares 1. Torna o atributo visível a todas as classes do pacote onde foi declarado: a) public b) private c) protected d) package
Leia maisInterfaces POO. Prof. Marcio Delamaro
Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso
Leia maisLinguagens de Programação Aula 12
Linguagens de Programação Aula 12 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Implementando subprogramas 2 Na aula de hoje Suporte para a programação orientada a objetos 3 Roteiro Introdução
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Leia mais4 Conceito de Herança
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Leia maisUniversidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
6 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... Diz-se que o nome de um método foi sobrecarregado ( overloaded
Leia maisLinguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Criando objeto Definindo valores para os atributos do objeto Método construtor Definindo valores padrão para os atributos dos
Leia maisLaboratório de programação II
Laboratório de programação II Herança e Polimorfismo Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Herança Mecanismo da Orientação a Objeto que permite criar novas classes aproveitando
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)
Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça Problema: Definir uma dependência um-para-muitos entre objetos, de forma quando o estado
Leia maisIntrodução. LP OO desenvolvida pela Sun no início da década de 90 com sintaxe semelhente a C\C++. C C++.
Java Parte I mleal@inf.puc-rio.br 1 Introdução LP OO desenvolvida pela Sun no início da década de 90 com sintaxe semelhente a C\C++. C C++. Todos os programas Java são compilados e interpretados. O compilador
Leia maisIntrodução à orientação a objetos. João Tito Almeida Vianna 18/05/2013
Introdução à orientação a objetos João Tito Almeida Vianna 18/05/2013 Roteiro Aula 1 Introdução: Programação estruturada x Orientação a objetos Orientação a objetos Classe e objeto Encapsulamento Herança
Leia maisLinguagem de Programação III
Linguagem de Programação III Aula-7 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando
Leia maisRelacionamentos entre objetos
Programação Orientada a Objetos Relacionamentos entre objetos Associação, composição e agregação Construtores t e sobrecarga Variáveis de classe e de instância Reinaldo Gomes reinaldo@cefet-al.br Objetos
Leia maisHerança. Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman SISTEMAS DE INFORMAÇÃO 1
Herança Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman 1 1 1 Motivação Você está desenvolvendo um sistema de gerenciamento de pessoal para a USP Precisa fazer: Cadastro de alunos e professores
Leia maisConceitos de Linguagens de Programação - Características. Paavo Soeiro
Conceitos de Linguagens de Programação - Características Paavo Soeiro Motivação Para que possa escolher uma linguagem apropriada ao problema. Melhorar o entendimento da linguagem utilizada. Facilitar o
Leia maisLinguagem de Programação III
Linguagem de Programação III Aula-5 Estruturas de Decisão e Controle. Arrays em Java Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de
Leia maisAlgoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):
Algoritmos e Programação 2 Baseado no material do Prof. Júlio Machado Objetos e Classes em Java Revisão Classes: encapsulam dados (atributos) e operações sobre os dados (métodos) Objetos: instâncias de
Leia maisInstituto Superior de Engenharia de Lisboa
Instituto Superior de Engenharia de Lisboa Introdução à Programação (PG) Docente: Pedro Viçoso Fazenda (pfazenda@cedet.isel.ipl.pt) Professor Responsável: Pedro Alexandre Pereira (palex@cc.isel.ipl.pt)
Leia maisConstrutores e Especificadores de Acesso
Construtores e Especificadores de Acesso Professora: Fátima L. S. Nunes 1 1 1 Orientação a Objetos Conceitos do Paradigma de Orientação a Objetos já vistos: Classes atributos e métodos Objetos instanciação
Leia maisInterfaces e Classes Abstratas
Interfaces e Classes Abstratas José Gustavo de Souza Paiva Problema Método obterarea()? Classes Abstratas Classes que funcionam como um molde Declarada com comando abstract Contém um ou mais métodos abstratos
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Interfaces Uma interface é uma forma abstrata de descrever um objeto A classe fixa a forma de um objeto
Leia maisPadrões de Design. Padrões de Design. Abstract Factory. Padrões de Design. Padrões de Design Abstract Factory. Abstract Factory.
Escopo Classe Objeto Finalidade Criação Estrutural Comportamental Factory Method Interperter Abstract Factory Builder Prototype Bridge Composite Facade Flyweight Proxy Chain of Responsibility Command Iterator
Leia maisHerança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos
e Ligação Dinâmica Programação Orientada a Objetos e Polimorfismo A é a contribuição original do paradigma de programação orientado a objetos Fundamentos chave do paradigma OO: Abstração de Dados A herança
Leia maisPADRONIZAÇÃO 10. INTERFACES PADRONIZAÇÃO CONTRATOS
PADRONIZAÇÃO 10. INTERFACES No dia-a-dia lidamos com diversos aparelhos elétricos Diversas empresas fabricam aparelhos elétricos com plugues E se cada empresa decidisse por conta própria o formato dos
Leia maisA figura abaixo representa uma classe denominada Carteira. Esta classe é composta dos métodos depositar(valor) e retirar(valor) e do atributo saldo.
1-Introdução à Programação Orientada a Objetos 1.1. O que é programação orientada a objetos? Programação orientada a objetos é uma metodologia de desenvolvimento de software. Sua principal vantagem é a
Leia maisProgramação Estruturada e Orientada a Objetos
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada e Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br
Leia maisModelo do Mundo Real. Abstração. Interpretação
Modelo do Mundo Real Mundo Real Abstração Interpretação Sistema de Software Modelo Algoritmo Abstração: O modelo precisa capturar apenas as características do mundo real que são importantes para o sistema
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
5 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... - Diz-se que o nome de um método foi sobrecarregado ( overloaded
Leia maisTipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas
Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Estruturas de Dados Aula 2: Estruturas Estáticas 03/03/2010 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Leia maisFundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus
Curso Disciplina Linguagem de Programação II Curso Engenharia da Computação Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Site : http://www1.univap.br/~wagner/ec.html Prof. Responsáveis
Leia maisEstruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?
Estruturas de Dados Aula 2: Estruturas Estáticas Tipos Básicos Quantos valores distintos podemos representar com o tipo char? 1 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa o
Leia maisMódulo III Padrões GOF
Módulo III Padrões GOF Professores Eduardo Bezerra edubezerra@gmail.com Ismael H F Santos ismael@tecgraf.puc-rio.br April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Ementa Introdução aos
Leia maisEstruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011
Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Leia maisIntrodução. Universidade Federal de Uberlândia. Programação Orientada a Objetos. Prof. Fabiano Dorça
Introdução Universidade Federal de Uberlândia Programação Orientada a Objetos Prof. Fabiano Dorça Introdução Definições iniciais: classe, objeto, métodos, atributos. Introdução Ao escrever um programa
Leia maisIteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções
Implementação de Genéricos, Iteradores Isabel Harb Manssour Porto Alegre, maio de 2006 Roteiro Implementação de Genéricos Coleções Conceito de Genérico Implementação Iteradores Conceito Utilização ForEach
Leia maisEsta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli
Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; Tudo no mundo real pode ser representado por meio do conceito de "objeto": uma planta, uma mesa, uma pessoa, um sentimento,
Leia maisPOO29004 Programação Orientada a Objetos
POO29004 Programação Orientada a Objetos Herança Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo 11 de setembro
Leia maisProgramação por Objectos. Java
Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/50 Herança revisão (1) A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse
Leia maisUNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGIA
LPOO - Linguagem de Programação Orientada a Objetos Prof. Msc. Célio R. Castelano Página 1 de 7 Curso Ciência da Computação Professor Célio Ricardo Castelano UNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO
Leia maisIntrodução ao Java. Prof. Herbert Rausch Fernandes
Introdução ao Java Prof. Herbert Rausch Fernandes Orientação a Objetos Programação Orientada por Objetos: é a construção de sistemas de software como uma coleção estruturada de implementações de tipos
Leia maisHerança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.
Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Possibilita o reuso de classes (código-fonte) Usar quando:
Leia maisProgramação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Leia maisLinguagem de Programação III
Linguagem de Programação III Aula-4 Construtores e Sobrecarga Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de dados nativos em Java
Leia maisProgramação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -
Programação Java - Herança, Classes Abstratas e Interfaces - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Herança Ligação Dinâmica Polimorfismo 2 Herança Herança é um conceito que mapeia as classes
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
5 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... - Diz-se que o nome de um método foi sobrecarregado ( overloaded
Leia maisProgramação Orientada a Objetos com Java. Prof. Júlio Machado
Programação Orientada a Objetos com Java Prof. Júlio Machado julio.machado@pucrs.br HERANÇA Herança Herança é uma relação de generalização/especialização entre classes A ideia central de herança é que
Leia maisINF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS
INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 4 Tipos Enumerados Generalização e Herança Visibilidade Chamada de Construtores
Leia maisUNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS
Data final de entrega 16/09/2014, até às 23h59min Enviar o arquivo de respostas em formato PDF e o arquivozip com códigos fontes para o e-mail motafernandomaia@gmailcom, insira no assunto do e-mail [Lista
Leia maisProgramação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos
Programação Orientada a Objetos: Herança Alexandre César Muniz de Oliveira Análise e Projeto Orientados a Objetos A análise orientada a objetos Determina o que o sistema deve fazer: Quais os atores envolvidos?
Leia mais