Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO002 Engenharia de Software
|
|
- Adelina Isadora Capistrano Alcântara
- 5 Há anos
- Visualizações:
Transcrição
1 UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO002 Engenharia de Software Enzo Seraphim 1 Padrões de Responsabilidade A decomposição em classes e objetos distribui responsabilidades em cada objeto e método do sistema. Responsabilidades podem ser controladas usando encapsulamento e controle de acesso, definindo: interfaces para clientes de objetos (public) interfaces para clientes de classes (protected) dados e operações internas à classe (private) Design patterns utilizam esses recursos para ir além e oferecer controle mais preciso Controle distribuído em objetos específicos Controle centralizado em um único objeto Notificação e intermediação de requisições Padrões orientados a responsabilidades lidam com situações em que é preciso fugir da regra comum que a responsabilidade deve ser distribuída ao máximo: Singleton: centraliza a responsabilidade em uma única instância de uma classe Observer: desacopla um objeto do conhecimento de que outros objetos dependem dele Mediator: centraliza a responsabilidade em uma classe que determina como outros objetos interagem Proxy: assume a responsabilidade Chain of Responsibility: permite que uma requisição passe por uma corrente de objetos até encontrar um que a processe Flyweight: centraliza a responsabilidade em objetos compartilhados de alta granularidade 1.1 Objeto Único - Singleton "Garantir que uma classe só tenha uma única instância, e prover um ponto de acesso global a ela." [GoF] Algumas classes devem ter uma única instância. Deve existir exatamente um planeta terra, um print spooler, uma saída padrão e um gerenciador de janelas. O padrão singleton assegura que apenas um objeto da classe será criado e fornece um ponto onde este objeto é manipulado. A própria classe, através de seus métodos estáticos, criará sua instância. Problema Garantir que apenas um objeto exista, independente do número de requisições que receber para criá-lo. Como controlar (contar) o número de instâncias da classe? Como armazenar a(s) instância(s)? Como controlar ou impedir a construção normal? Se for possível usar new e um construtor para criar o objeto, há como limitar instâncias? Como definir o acesso à um número limitado de instâncias (no caso, uma apenas)? Como garantir que o sistema continuará funcionando se a classe participar de uma hierarquia de classes? Aplicações Um único banco de dados Um único acesso ao arquivo de log Um único objeto que representa um vídeo Uma única fachada (Façade pattern) Estrutura
2 Exemplo Vantagens Acesso central e extensível a recursos e objetos Pode ter subclasses* (o que seria impossível se fosse apenas usada uma classe com métodos estáticos) Desvantagens Qualidade da implementação depende da linguagem Difícil de testar (simulações dependem de instância extra) Implementação complicada em ambiente multithreaded e em ambiente distribuído Exemplo Java public class ContadorGlobal { private ContadorGlobal () { private static int numero = 1; private static ContadorGlobal instancia = new ContadorGlobal (); public static ContadorGlobal getinstancia() {return instancia; public static void incrementa () { numero++; public static int getnumero() {return numero; import java.io.*; public class Principal{ public static void main(string[] args) { ContadorGlobal c1, c2, c3; //c1 = new ContadorGlobal (); // nao compila! c2 = ContadorGlobal.getInstancia (); c3 = ContadorGlobal.getInstancia (); if (c2 == c3) { System.out.println("c2 e c3 são mesmo objeto!"); c2.incrementa (); System.out.println("c2 = " + c2.getnumero ()); System.out.println("c3 = " + c3.getnumero ()); c3.incrementa (); System.out.println("c2 = " + c2.getnumero ()); System.out.println("c3 = " + c3.getnumero ()); 1.2 Observador - Observer "Definir uma dependência um-para-muitos entre objetos para que quando um objeto mudar de estado, todos os seus dependentes sejam notificados e atualizados automaticamente." [GoF] Problema cadastra Observador Sujeito notifica Como garantir que objetos que dependem de outro objeto fiquem atualizados com as mudanças? Como fazer com que os observadores tomem conhecimento do objeto de interesse? Como fazer com que o objeto de interesse atualize os observadores quando seu estado mudar?
3 Estrutura Os dados podem ser modificados por um cliente ou por um dos observadores. Evitar o acoplamento entre os observadores é a função do padrão Observador. Ele define um objeto sujeito e vários observadores. Quando o sujeito é modificado, os observadores são notificados. Os observadores são previamente registrados com o sujeito. Exemplo Consequências Há um acoplamento entre o sujeito e seus observadores; Os observadores podem ser adicionados e removidos em execução. public abstract class Encargo { abstract public void atualizar(double valor); public class Inss extends Encargo { private double valorinss=0d; public void atualizar(double valor) { valorinss = valor * 0.1; public double getvalorinss() { return valorinss; public class Pis extends Encargo { private double valorpis=0d; public void atualizar(double valor) { valorpis = valor * 0.03; public double getvalorpis() {return valorpis; public abstract class Trabalhista { private List<Encargo> encargos = new ArrayList<Encargo>(); protected void notificar(double valor) { Iterator<Encargo> it = this.iteratorencargo(); for(int n=0; n < this.sizeofencargo(); n++){ it.next().atualizar(valor); public class Folha extends Trabalhista { private double SalContrib = 0;
4 public double getsalcontrib() { return SalContrib; public void setsalcontrib(double salcontrib) { SalContrib = salcontrib; notificar(salcontrib); public class App { public static void main(string args[]){ Folha f = new Folha(); Pis p = new Pis(); f.addencargo(p); Inss i = new Inss(); f.addencargo(i); f.setsalcontrib(1000); System.out.println("pis=" + p.getvalorpis()); System.out.println("inss=" + i.getvalorinss()); 1.3 Mediador - Mediator "Definir um objeto que encapsula como um conjunto de objetos interagem. Mediator promove acoplamento fraco ao manter objetos que não se referem um ao outro explicitamente, permitindo variar sua interação independentemente." [GoF] Estrutura Um objeto Mediador deve encapsular toda a comunicação entre um grupo de objetos Cada objeto participante conhece o mediador, mas ignora a existência dos outros objetos O mediador conhece cada um dos objetos participantes A interface do Mediador é usada pelos colaboradores para iniciar a comunicação e receber notificações: O mediador recebe requisições dos remetentes O mediador repassa as requisições aos destinatários Toda a política de comunicação é determinada pelo mediador (geralmente através de uma implementação concreta do mediador) Problema
5 Como permitir que um grupo de objetos se comunique entre si sem que haja acoplamento entre eles? Como remover o forte acoplamento presente em relacionamentos muitos para muitos? Como permitir que novos participantes sejam ligados ao grupo facilmente? Aplicação Use o padrão mediador o relacionamento de associação for bidirecional e um método de cada classes devem ser executado, não importando a cardinalidade; Exemplo Conseqüências Desacoplamento colegas; Evita relacionamento cíclico nas linguagens de programação; Abstrai os relacionamentos entre colegas no mediador. Exemplo Java abstract class Mediador { abstract public void OperacaoMediada(); abstract class Colaborador{ private Mediador mediador; public void chamaroperacao() { mediador.operacaomediada(); ; public Mediador getmediador () {return mediador; public void setmediador (Mediador m) { mediador = m; class ColaboradorGato extends Colaborador { private int velocidade = 0; public void PersegueRato() { velocidade = velocidade + 5; public int getvelocidade() { return velocidade; class ColaboradorRato extends Colaborador { private int velocidade = 0; public void FogeGato() { velocidade = velocidade + 6; public int getvelocidade() { return velocidade; class MediadorGatoRato extends Mediador { private ColaboradorGato gato; private ColaboradorRato rato; public ColaboradorGato getgato() { return gato; public void setgato(colaboradorgato g) { gato = g; public ColaboradorRato getrato() {return rato;
6 public void setrato(colaboradorrato r) { rato = r; public void OperacaoMediada(){ if (gato!=null) gato.perseguerato(); if (rato!=null) rato.fogegato(); public class Principal { public static void main(string[] args) { ColaboradorGato g = new ColaboradorGato(); ColaboradorRato r = new ColaboradorRato(); MediadorGatoRato m = new MediadorGatoRato(); m.setgato(g); m.setrato(r); r.setmediador(m); g.setmediador(m); System.out.println("velocidade gato = " + g.getvelocidade() ); System.out.println("velocidade rato = " + r.getvelocidade() ); r.chamaroperacao(); System.out.println("velocidade gato = " + g.getvelocidade() ); System.out.println("velocidade rato = " + r.getvelocidade() ); g.chamaroperacao(); System.out.println("velocidade gato = " + g.getvelocidade() ); System.out.println("velocidade rato = " + r.getvelocidade() ); 1.4 Procurador - Proxy "Prover um substituto ou ponto através do qual um objeto possa controlar o acesso a outro." [GoF] Estrutura Cliente usa intermediário em vez de sujeito real Intermediário suporta a mesma interface que sujeito real Intermediário contém uma referência para o sujeito real e repassa chamadas, possivelmente, acrescentando informações ou filtrando dados no processo Exemplo
7 Aplicabilidade um procurador pode representar um objeto que está em outra máquina. As chamadas são enviadas pela rede ao objeto remoto; um procurador pode controlar o acesso a um outro objeto, proibindo operações críticas. Vantagens Transparência: mesma sintaxe usada na comunicação entre o cliente e sujeito real é usada no proxy Permite o tratamento inteligente dos dados no cliente Permite maior eficiência com caching no cliente Exemplo Java public abstract class Banco{ public abstract boolean emprestimo(float v); public class Brasil extends Banco{ private Central central = null; public void setcentral(central v) { central=v; public Central getcentral() { return central; public boolean emprestimo(float v){ return central.emprestimo(v); public class Central extends Banco{ private float dinheiro; public float getdinheiro() { return dinheiro; public void setdinheiro(float v) { dinheiro = v; public boolean emprestimo(float v){ if(dinheiro >= v){ dinheiro -= v; return true; else return false; public class Empresa{ private Banco banco = null; public void setbanco(banco v) { banco = v; public Banco getbanco() { return banco; public boolean pediremprestimo(int i){ if(banco!= null) return banco.emprestimo(i); return false; public class App { public static void main(string[] args) { Central c = new Central(); c.setdinheiro(100); Brasil b = new Brasil(); b.setcentral(c); Empresa e = new Empresa(); e.setbanco(b); e.pediremprestimo(50); System.out.println("saldo BC = " + c.getdinheiro()); 1.5 Cadeia de Responsabilidades - Chain of Responsibilities "Evita acoplar o remetente de uma requisição ao seu destinatário ao dar a mais de um objeto a chance de servir a requisição. Compõe os objetos em cascata e passa a requisição pela corrente até que um objeto a sirva." [GoF] Aplicabilidade Quando vários objetos podem responder um requerimento, mas a decisão de quem responde só pode ser resolvida em execução. Estrutura
8 Exemplo Exemplo de Objetos Conseqüências o acoplamento é reduzido. O emissor do requerimento e o receptor não se conhecem; a responsabilidade por responder a um requerimento pode ser modificada em execução; pode ser que ninguém na cadeia de objetos possa responder a um requerimento insegura. Exemplo Java abstract public class Notas { protected Notas prox = null; protected static int ultimaserie; protected int serie; public abstract int soma(); public int getserie() { return serie; public static Notas criarnotas(int v) { Notas cab=null; if((int)v/10>=1){ cab=new Nota10(); v-=10; else if((int)v/5>=1){ cab=new Nota5(); v-=5; else if((int)v/1>=1){ cab.prox=new Nota1(); v-=1; Notas aux=cab; while(v>0){ if((int)v/10>=1){ aux.prox=new Nota10();
9 v-=10; else if((int)v/5>=1){ aux.prox=new Nota5(); v-=5; else{ aux.prox=new Nota1(); v-=1; aux = aux.prox; return cab; public class Nota10 extends Notas{ public Nota10(){ ultimaserie++; serie=ultimaserie; public int soma() { int soma = 10; if(prox!=null) soma += prox.soma(); return soma; public class Nota5 extends Notas{ public Nota5(){ ultimaserie++; serie=ultimaserie; public int soma() { int soma = 5; if(prox!=null) soma += prox.soma(); return soma; public class Nota1 extends Notas{ public Nota1(){ ultimaserie++; serie=ultimaserie; public int soma() { int soma = 1; if(prox!=null) soma += prox.soma(); return soma; public class Cheque { private Notas notas=null; private int valor=0; public Cheque(){ public int getvalor(){ return valor; public void setvalor(int v){ valor=v; public void desconta(){ notas=notas.criarnotas(valor); public int somanotas(){ return notas.soma(); import java.util.*; public class App{ public static void main(string[] args){ Scanner in = new Scanner (System.in); Cheque c = new Cheque(); System.out.println("digite valor cheque:"); c.setvalor( in.nextint() ); c.desconta(); System.out.println("soma das notas: " + c.somanotas()); 1.6 Peso Mosca - Flyweight "Usar compartilhamento para suportar grandes quantidades de objetos refinados eficientemente." [GoF]
10 Estrutura Um peso-mosca é um objeto compartilhado que pode ser usado em múltiplos contextos simultâneamente. O estado intrínseco consiste de informações independentes do contexto do pesomosca. O estado extrínseco depende e varia com o contexto do peso-mosca e, portanto, não pode ser compartilhado. A classe Flyweight define uma interface de entrada para os Flyweights. Pode receber e atuar sobre estados extrínsecos. A classe Concreto implementa a interface do Flyweight e adiciona estados intrínsecos se existirem. Essa classe precisa ser compartilhada e qualquer estado que ela armazene precisa ser intrínseco. A classe ConcretoNaoCompartilhado são objetos não compartilhados. Nem todas as subclasses que implementam Flyweight precisam ser compartilhadas. A classe FabricaFlyweight verifica se ainda não criada a referência antes de cria-lo, caso contrário retorna a referência que já existe. A classe Cliente armazena referencias para os objetos dos estados extrínsecos do FlyWeight. Exemplo Aplicabilidade Quando o tamanho do conjunto de objetos for significativamente menor que a quantidade de vezes em que eles são usados na aplicação(custos de armazenamento críticos). Quando objetos podem ser usados em diferentes contextos ao mesmo tempo (agindo sempre como um objeto indepentente). Quando a maior parte do estado do objeto possa ser tornado extrínseco. Quenado grandes grupos de objetos podem ser substituídos por poucos objetos compartilhados depois de se separar o estado extrínseco do intrínseco. Quando a aplicação não depende da identidade dos objetos. Quando não usar Quando o estado dos objetos não for imutável (é preciso passar o estado mutável como parâmetro e isto pode ser impraticável se o estado consistir de vários objetos).
11 Quando for necessário elaborar um algoritmo ou algo complicado para separar objetos mutáveis de imutáveis Conseqüências Podem ser introduzidos custos em termos de eficiência devido à transferência, procura e/ou computação do estado extrínseco, compensados pela economia de memória. A economia de memória resulta de vários factores: redução do número de instâncias; quantidade de estado intrínseco se o estado extrínseco é calculado ou armazenado. Exemplo: Compartilhar objetos que representam os caracteres no documento: Estado intrínseco - Código dos caracteres Estado extrínseco - Posicionamento dos caracteres; O padrão Flyweight permite-nos utilizar um objeto para cada caráter sem utilizar uma grande quantidade de objetos. Caracteres idênticos em posições diferentes do texto utilizam o mesmo objeto. Exemplo Java public abstract class Caracter { public abstract void setsimbolo(char v); public abstract char getsimbolo(); public class Letra extends Caracter{ private char letra; public char getsimbolo() { return letra; public void setsimbolo(char simbolo) { this.letra = simbolo; public class Pontuacao extends Caracter { private char pontuacao; public char getsimbolo() { return pontuacao; public void setsimbolo(char simbolo) { this.pontuacao = simbolo; public class Alfabeto { private List<Caracter> caracteres = new ArrayList<Caracter>(); public Caracter getcaracter(char c){ Caracter caract=null; char low = Character.toLowerCase(c); if((low >= 'a') && (low <= 'z')){ Iterator<Caracter> it = iteratorcaracter(); while(it.hasnext()){ Caracter ca = it.next(); if(ca.getsimbolo()==c){ caract = ca; break; if(caract==null){ Letra l = new Letra(); l.setsimbolo(c); caracteres.add(l); caract = l; else{ Pontuacao p = new Pontuacao(); p.setsimbolo(c); caracteres.add(p); caract = p; return caract; public int sizeofcaracter(){ return caracteres.size(); public Iterator<Caracter> iteratorcaracter(){ return caracteres.iterator();
12 public class Posicao { private int paragrafo; private int sentenca; private static Alfabeto alfabeto = new Alfabeto(); private Caracter caracter; public Posicao(int par, int sen, char c){ paragrafo = par; sentenca = sen; caracter = alfabeto.getcaracter(c); public int getparagrafo() { return paragrafo; public int getsentenca() { return sentenca; public static Alfabeto getalfabeto() { eturn alfabeto; public class App { public static void main(string args[]) { String hino = "Ouviram do Ipiranga as margens plácidas "... + "Pátria amada, Brasil!"; int i = 0; int par=0; int sen=0; Posicao pos[] = new Posicao[hino.length()]; for (i = 0; i < hino.length(); i++) { char c = hino.charat(i); pos[i] = new Posicao(par, sen, c); if(c == ' ') sen++; if(c == '.') par++; System.out.println("total letras=" + hino.length()); System.out.println("total simbolos=" + Posicao.getAlfabeto().sizeOfCaracter()); System.out.println("IMPRIMIR SIMBOLOS"); Iterator<Caracter> it1 = Posicao.getAlfabeto().iteratorCaracter(); while (it1.hasnext()) { System.out.print("[" + it1.next().getsimbolo() + "]"); i++; if (i % 10 == 0) { System.out.println();
Aná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 maisUniversidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO002 Engenharia de Software
UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO002 Engenharia de Software Enzo Seraphim 1 Padrões de Construção A maneira
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 maisVetores Unimensionais
Vetores Unimensionais Objetivos Entender a importância e a necessidade do uso de Vetores Definição de Manipulação de Vetores Inserir elementos em um vetor (usando laços ou não) Imprimir elementos de um
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 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 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 maisProgramação Orientada a Objetos. Padrões Estruturais
Programação Orientada a Objetos Padrões Estruturais Cristiano Lehrer, M.Sc. Classificação dos Padrões de Projeto Propósito o que o padrão faz: Padrões de criação: abstraem o processo de criação de objetos
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 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 maisAula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes
Aula 03 Introdução à Java Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www3.ifrn.edu.br/~brunogomes Agenda da Aula Representação de Algoritmos em Pseudocódigo: Tipos de Dados;
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 maisAnálise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 11 Padrões GoF (Bridge e Decorator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype Singleton
Leia maisUniversidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java
Guia da Sintaxe do Java TIPOS PRIMITIVOS DE DADOS DO JAVA São os tipos nativos de dados do Java, que podem ser usados na declaração de atributos, variáveis, parâmetros. Tipo primitivo Tamanho Valor padrã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 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 maisVetores Unimensionais
Vetores Unimensionais Objetivos Entender a importância e a necessidade do uso de Vetores Definição de Manipulação de Vetores Inserir elementos em um vetor (usando laços ou não) Imprimir elementos de um
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 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 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 maisAula 08 Estruturas de Condição. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes
Aula 08 Estruturas de Condição Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Entrada de Dados; Estruturas de Controle: Estrutura de Sequência;
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 maisVetores Unimensionais
Vetores Unimensionais Objetivos Entender a importância e a necessidade do uso de Vetores Definição de Manipulação de Vetores Inserir elementos em um vetor (usando laços ou não) Acessar elementos de um
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 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 maisAnálise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 08 Padrões GoF (Observer e Builder) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype Singleton
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 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 maisPadrões de Projeto de Software
Padrões de Projeto de Software Flyweight Paulo Gomide Departamento de Ciência da Computação Universidade de Itaúna Sumary Flyweight Definição Usa compartilhamento para suportar uma grande quantidade de
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 maisOrientação a Objetos AULA 09
Orientação a Objetos AULA 09 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Coleções ü Coleções lista de objetos ü Coleções conjuntos 2 Coleções Podemos armazenar vários objetos em um array e este
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 maisLógica de Programação. Lógica de Programação com Java
Lógica de Programação Lógica de Programação com Java Sumário Lógica de programação 1. Algoritmos 2. Comentários no código 3. Tipos de dados 4. Constantes e Variáveis 5. O que devemos saber para começar
Leia maisJAVA. Professor: Bruno Toledo
JAVA Professor: Bruno Toledo Funcionamento de uma LP Em uma Linguagem de Programação (LP) como C e Pascal, temos o seguinte quadro quando vamos compilar um programa. Código fonte em c Teste.c Gera código
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 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 maisPADRÕES DE PROJETO DE SOFTWARE
Universidade de São Paulo, Instituto de Ciências Matemáticas e de Computação PADRÕES DE PROJETO DE SOFTWARE SSC 621: Análise e Projeto Orientados a Objetos Prof. Dr. Lucas Bueno R. Oliveira 2º Semestre
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 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 maisProgramação Orientada a Objetos Relacionamentos entre classes
Programação Orientada a Objetos Relacionamentos entre classes Prof. Vicente Paulo de Camargo RELACIONAMENTO ENTRE CLASSES Interface agregação Dependencia composição generalização associação RELACIONAMENTO
Leia maisObjetivo: Aplicar a técnica de encapsulamento no sistema de gestão acadêmica
Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 03 Objetivo: Aplicar a técnica de encapsulamento no sistema de gestão
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 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 maisSabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes.
JAVA ENCAPSULAMENTO Na linguagem de programação Java, a classe é o alicerce para o encapsulamento, o qual é definido como uma técnica que faz com que os atributos da classe permaneçam ocultos, pois desta
Leia mais1) Responda de acordo com os conceitos de orientação a objetos (0,5).
Avalição II (Teórica) 22/06/2017 Disciplina Linguagem de Programação II Prof. Wagner, dos Santos C. de Jesus Curso Engenharia da Computação Questões Solução da Avaliação 1) Responda de acordo com os conceitos
Leia maisRESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:
RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em: http://www.oxnar.com.br/aulas/java ATIVIDADE ELABORAR O PROGRAMA DE CÁLCULOS DE ÁREAS USANDO
Leia mais// quando o estado do Sujeito muda
Padrão Observer No padrão Observer temos dois objectos: um, designado Sujeito (Subject) que possui uma dada informação que pode variar ao longo da execução do programa, e outro, designado Observador (Observer)
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos Engenharia da Computação Professor: Rosalvo Ferreira de Oliveira Neto Dados Pessoais Rosalvo Ferreira de Oliveira Neto MSc. em ciência da computação (UFPE) rosalvo.oliveira@univasf.edu.br
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 maisAnálise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 10 Padrões GoF (Protoype e Façade) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype Singleton
Leia maisAtribuições: Valores, Ponteiros e Referências
Atribuições: Valores, Ponteiros e Referências Estruturas de Dados Prof. Vilson Heck Junior Sobre Variáveis Aprendemos, em introdução à programação, que possuem 3 partes mais importantes: Nome; Tipo de
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 maisProgramação Orientada a Objetos II
Programação Orientada a Objetos II Introdução Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com www.bolinhabolinha.com Apresentação Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com Ementa Introdução ao Desenvolvimento
Leia maisLÓGICA DE PROGRAMAÇÃO (JAVA) VARIÁVEIS. Professor Carlos Muniz
LÓGICA DE PROGRAMAÇÃO (JAVA) String String é uma classe contida no pacote java.lang e que descende da classe java.lang.object. De forma conceitual podemos dizer que é uma sequência de caracteres usada
Leia maisnome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){
UNIVERSIDADE FEDERAL DE SANTA CATARINA - Departamento de Automação e Sistemas PROGRAMAÇÃO DE SISTEMAS AUTOMATIZADOS - 2016/2 - P2 Nome: ------------------------------------------------------------------------------------------------------
Leia mais// quando o estado do Sujeito muda
Padrão Observer No padrão Observer temos dois objectos: um, designado Sujeito (Subject) que possui uma dada informação que pode variar ao longo da execução do programa, e outro, designado Observador (Observer)
Leia maisPilha e Fila. Pilha em C. Definir o registro que representará cada elemento da pilha.
1 Estrutura de Dados II Pilha e Fila Pilha em C Definir o registro que representará cada elemento da pilha. No início a pilha estará vazia, logo o ponteiro topo tem o valor NULL. As operações de inserção
Leia maisSeleção Múltipla Laços (while, do-while, for) AULA 05
Introdução a Programação IF669 http://www.cin.ufpe.br/~if669 Seleção Múltipla Laços (while, do-while, for) AULA 05 Ricardo Massa F. Lima rmfl@cin.ufpe.br Sérgio C. B. Soares scbs@cin.ufpe.br Até aqui...
Leia maisM e d iator. Padrões de Projeto. Mediator. Prof. Alexandre Vidal DEINF-UFMA. M e di a t or
T ó p i c o s A v a n ç a d o s e m L i n g u a g e m d e P r o g r a m a ç ã o Padrões de Projeto Prof. Alexandre Vidal DEINF-UFMA Classificação: Propósito: Comportamental Escopo: Objeto Intenção: definir
Leia maisPROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO
COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO FOZ DO IGUAÇU 2013 LISTA
Leia maisNo final deste curso, saberás criar programas através da linguagem de programação Java.
Programação em Java Programação Formato: Mentored - Online Preço: 415 ( Os valores apresentados não incluem IVA. Oferta de IVA a particulares e estudantes. ) Horário: Flexível das 24h/24h Duração: ~45h
Leia maisCapítulo 6: Linguagens de Programação
Capítulo 6: Linguagens de Programação Ciência da Computação: Uma Visão Abrangente 11a Edição by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Capítulo 6: Linguagens de programação 6.1 Perspectiva
Leia maisSegunda Parte (3 valores) Primeira Parte (7 valores) Nome: Número: PERGUNTA NOTA PERGUNTA RESPOSTA
2º Teste 2012/2013 1º Semestre 201301171830 1/7 2º Teste 2012/2013 1º Semestre 17 de Janeiro de 2013, 11:30 (120 minutos) Nome: Número: Primeira Parte (7 valores) PERGUNTA NOTA 1.1.1 1.1.2 1.1.3 1.2 1.3
Leia maisPadrões de Projeto de Software
Padrões de Projeto de Software Lista de Exercícios AV2-01 Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 Qual o objetivo dos padrões Comportamentais, segundo o catálogo GOF? Questão 1 Resposta
Leia maisAnálise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 09 Padrões GoF (Adapter e Composite) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype Singleton
Leia maisPolimorfismo. O que é polimorfismo?
O que é polimorfismo? Polimorfismo Significa que variáveis podem referenciar mais do que um tipo. Não é um conceito novo e várias linguagens de programação aplicam. Funções são polimórficas quando seus
Leia maisALOCAÇÃO DINÂMICA DE MEMÓRIA
INE5408 Estruturas de Dados Semestre 2008/1 Prof. Leandro J. Komosinski ALOCAÇÃO DINÂMICA DE Memória de Computador 1 byte = 8 bits (ex.: 00100110) 1 KB = 1024 bytes 1 MB = 1024 KB 1 GB = 1024 MB Meu computador
Leia maisSobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga
Algoritmos e Programação II Aula 3 Sobrecarga *Adaptado do material do Prof. Júlio Machado Sobrecarga Em várias linguagens é comum encontrarmos rotinas que fazem basicamente a mesma coisa, porém, com nomes
Leia maisRESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos;
Fundação CECIERJ - Vice Presidência de Educação Superior a Distância Curso de Tecnologia em Sistemas de Computação Disciplina: Programação Orientada a Objetos AP2 2 semestre de 2016. Nome Assinatura Observações:
Leia maisAtributos e Métodos Estáticos
Atributos e Métodos Estáticos Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Atributos Estáticos Atributos
Leia maisEspecificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)
Mecanismos de controlo de acesso Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a cada classe e cada membro da classe (dados e métodos) Modificadores de acesso: public protected private
Leia maisDiagrama de Classes. Conceitos Básicos. prof. Robinson Vida Monday, April 20, 15
Diagrama de Classes Conceitos Básicos prof. Robinson Vida (vida@utfpr.edu.br) 1 Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e
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 maisLinguagem de programação Programação Orientada a objetos
Instituto Federal de Minas Gerais Campus Ponte Nova Linguagem de programação Programação Orientada a objetos Professor: Saulo Henrique Cabral Silva Paradigma da orientação a objetos Paradigma = forma de
Leia maisHerança. Prof. Fernando V. Paulovich 23 de agosto de 2010
Herança SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação(ICMC) Universidade
Leia maisStructural Patterns - Flyweight
Algumas aplicações, tais como editores de texto, possuem uma granularidade de representação muito fina sobre os dados;... e uma quantidade muito grande de dados. O custo de memória para representação destes
Leia maisCIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO
REVISÃO POO INTRODUÇÃO À LINGUAGEM JAVA CRIANDO CLASSES EM JAVA Convenção de Nomes em Java Classes iniciam com letras maiúsculas Métodos, atributos e variáveis locais iniciam com minúsculas. Declaração
Leia maisPADRÕES DE PROJETO DE SOFTWARE
Universidade de São Paulo, Instituto de Ciências Matemáticas e de Computação PADRÕES DE PROJETO DE SOFTWARE SSC 621: Análise e Projeto Orientados a Objetos Prof. Dr. Lucas Bueno R. Oliveira 2º Semestre
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 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 maisVetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli
Vetores De modo geral, em linguagem de programação, vetores ou arrays são estruturas de dados que permitem que uma mesma variável possa armazenar mais de um valor; Em Java, vetores são coleções de dados,
Leia maisQuando um Auto-Relacionamento não é mais um Auto-Relacionamento
UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 1 Quando um Auto-Relacionamento não é mais um Auto-Relacionamento! 1. Introdução!! Em algumas situações, durante o processo de modelagem,
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 maisClasses, instâncias e métodos de acesso. prática
Classes, instâncias e métodos de acesso prática Exercício 01 Crie a classe Ponto que possui duas dimensões (int x, int y). Crie os métodos get e set. Faça o main para instanciar e testar a classe. Adicione
Leia maisApêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são:
Apêndice A Classe Vector A classe Vector permite a representação de um vetor de dados de maneira similar à de um array, visto na disciplina Programação Orientada a Objetos I, mas com maior flexibilidade.
Leia maisVariáveis primitivas e Controle de fluxo
Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/
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 maisIntrodução a classes e objetos. Prof. Marcelo Roberto Zorzan
Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Aula de Hoje Abstração de Dados Classes e Objetos Definição de Métodos Métodos com parâmetro Abstração de Dados Processo mental através do qual
Leia maisSintaxe Básica do Java. João Paulo Q. dos Santos
Sintaxe Básica do Java João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Plano de Aula Introdução; Método Main; Variáveis: Tipos primitivos; Referências para Objetos; Operadores; Estruturas: Condicionais
Leia maisEncapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos
Encapsulamento e Métodos (Construtores e Estáticos) Sobrecarga de Métodos João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro Conceitos sobre Encapsulamento; Variável this; Métodos Construtores;
Leia maisUniversidade Estadual de Santa Cruz
Universidade Estadual de Santa Cruz Departamento de Ciências Exatas e Tecnológicas DCET Bacharelado em Ciência da Computação Professor: Esbel Tomás Valero Orellana Linguagem de Programação III Introdução
Leia maisDIRETORIA ACADÊMICA DE GESTÃO E TECNOLOGIA DA INFORMAÇÃO DIATINF TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TADS
DIRETORIA ACADÊMICA DE GESTÃO E TECNOLOGIA DA INFORMAÇÃO DIATINF TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TADS LISTA DE EXERCÍCIOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS 1. Crie um modelo (classe)
Leia mais