Padrão de Projeto State

Tamanho: px
Começar a partir da página:

Download "Padrão de Projeto State"

Transcrição

1 padrão state_ cinto de utilidades MÁQUINAS DE ESTADO COM O Padrão de Projeto State Desenvolver software é trabalhar com abstrações o tempo todo, pois estas nos ajudam a gerenciar a complexidade nos sistemas que desenvolvemos. Uma das abstrações mais poderosas que podemos empregar são as máquinas de estado. Com elas, é possível até complexos autômatos para uso em compiladores máquina de estados é extremamente interessante por ser de fácil construção, sucinto e altamente comunicativo, facilitando bastante a comunicação com os usuários do sistema e especialistas de domínio. No entanto, o que acontece é que muitos utilizam a modelagem de máquinas de estados apenas em nível conceitual, perdendo-o de vista no momento da implementação. Muitos até fazem a modelagem em máquina de estados de uma maneira mais formal usando algo como UML1, mas apenas para propósitos de documentação de requisitos e comu- estados é convertida em diversos ifs, que se espalham por variadas partes do sistema, aumentando as lacunas sintática e semântica entre o modelo de domínio discutido pelas pessoas e o modelo de representar um conceito da linguagem do domínio explicitamente em código, como advogado pelo Domain-driven Design 2. Mas não precisa ser assim! 1. Máquinas de estados são um recurso de modelagem também previsto 2. Para mais detalhes sobre Domain-driven Design, recomendo fortemente Neste artigo, mostraremos como implementar máquinas de estado por meio do padrão de projeto State. Primeiramente, faremos um resumo do padrão e, em seguida, ilustraremos seu uso por meio de um exemplo prático associado com o uso da Java Persistence API. Ressaltamos que este artigo assume que o leitor já possui um conhecimento básico do funcio- desejam mais informações, ver seção de referências). O padrão State O padrão State é um dos 23 padrões de projeto da Gang of Four (GoF), já velho conhecido da comunidade (o livro foi publicado em 1994). Apesar de alguns desses padrões hoje serem até meio controversos (como é o padrão Singleton, por exemplo), o padrão State (juntamente com seu irmão gêmeo Strategy) continua sendo de elevada aplicabilidade nos sistemas desenvolvidos atualmente. A ideia do State é representar os estados de uma máquina de estados por meio de classes que implementam uma interface comum, a qual contém as regras de transição. Cada classe implementa, então, a ação devida quando a transição é acionada por essa interface. O outro elemento do padrão é o chamado contexto, que é a classe da qual o estado faz parte e também é a classe com a qual o restante do sistema interage. Quando uma regra de negócio é acionada a leitura do livro homônimo de Eric Evans. / 26

2 Alexandre Bacharel em Ciência da Computação pela Universidade Federal de Viçosa (UFV) e mestre em Informática pela PUC-Rio. Traba- e editor-técnico da revista MundoJ, além de manter um blog em Bacharel em Ciências da open source, como KDE e Mentawai, e é da equipe de arquitetura da CodeIT Solutions, uma empresa especializada na prestação de serviços de desenvolvimento de software para as indústrias de seguros. Máquinas de estados são uma construção extremamente comum para se modelar requisitos de diversos sistemas. Normalmente, são fáceis de desenhar (em forma de modelos) e interessantes instrumentos para comunicação e validação com os usuários por serem de simples entendimento. No entanto, muitos desenvolvedores perdem artigo, abordamos o padrão de projeto State, bastante útil para modelagem de máquinas de estado em código. Como sempre, damos uma ênfase mais prática e direta, mostrando uma opção de implementação do padrão em Java usando Enums e a Java Persistence API. ção de uma transição de estado, o contexto dispara do de realizar a ação correspondente e determinar passado como parâmetro ao estado para que o estado possa decidir o estado seguinte, setando um obje- estrutura geral do padrão State. Vamos à seção seguinte, na qual utilizaremos um exemplo concreto para o qual aplicaremos o padrão. Aplicando o padrão State na prática Como ilustração, imaginemos uma aplicação e publicação de artigos para um periódico qualquer. Neste exemplo, estamos interessados em modelar os estados e transições de um artigo. Após discussão CONTEXT + REQUEST ( ) STATE.HANDLE ( ) CONCRETESTATE A Figura 1. Estrutura geral do padrão State. STATE com os usuários, chegamos ao diagrama de estados O modelo apresentado é bastante autoexplicativo. Os estados são representados pelos retângulos e as transições por setas. Tudo começa quando um artigo é submetido pelo sistema. Quando isso acontece, ele vai para o estado Recebido. A partir desse estado, o sistema realiza algumas validações automáticas no artigo, como, por exemplo, ortogra- automática determina se o artigo irá para o estado Aceito para revisão ou Recusado. No estado Recusado, o usuário pode fazer alterações à vontade e realizar uma nova submissão. Uma vez que um artigo esteja Aceito para revisão, um humano fará a leitura e revisão do artigo, determinando se o mesmo está satisfatório, se apresenta erros básicos ou se, simplesmente, foi recusado. Cada um desses eventos faz com que o artigo vá, respectivamente, para os estados Aceito para publicação, Aceito com correções e Recusado. CONCRETESTATE B Implementação tradicional do padrão Agora, vamos ao que interessa: o código! A Listagem 1 apresenta a interface para os estados do nosso modelo, contendo as possíveis transições da máquina. Na Listagem 2 trazemos 27 \

3 INÍCIO ACEITO PARA REVISÃO satisfatório ACEITO PARA PUBLICAÇÃO validado com sucesso apresenta erros básicos satisfatório ACEITO COM CORREÇÕES submetido RECEBIDO validado sem sucesso submetido recusado recusado RECUSADO FIM Figura 2. Modelagem da máquina de estados para o sistema de publicação de artigos. um exemplo simples de implementação da interface para o estado Recebido. Repare que o código é bastante simples, apenas cabendo ao estado em questão decidir qual é o estado seguinte. As transições que não fazem sentido para um dado estado lançam a exceção não checada UnsupportedOperationException. Listagem 1. Interface para os estados possíveis de um artigo. public interface EstadoArtigo { void submetido(artigo artigo); void validadocomsucesso(artigo artigo); void validadosemsucesso(artigo artigo); void satisfatorio(artigo artigo); void apresentaerrosbasicos(artigo artigo); void recusado(artigo artigo); Listagem 2. Implementação do estado recebido. public class Recebido implements EstadoArtigo { public void submetido(artigo artigo) { throw new UnsupportedOperationException( O artigo está em um estado inválido para a ocorrência do evento submetido : + this); public void validadocomsucesso(artigo artigo) { artigo.setestado(new AceitoParaRevisao()); public void validadosemsucesso(artigo artigo) { artigo.setestado(new Recusado()); /* lançando UnsupportedOperationException igual a submetido()... */ A Listagem 3 exibe o código da classe principal (o contexto do padrão State), por meio da qual o restante da aplicação interage (por isso, os estados podem ter visibilidade restrita apenas ao pacote em que está a classe de contexto). Repare que a classe artigo não precisa ter conhecimento de qual é o estado seguinte ao do evento ocorrido, isso passa a ser uma responsabilidade do estado com que o artigo está atualmente plementação tradicional, provavelmente não haveria os métodos de transição na classe Artigo, e a lógica mente por outras partes do sistema (com os estados modelados talvez até como constantes inteiras, acredite se quiser!). A Listagem 4 mostra um exemplo de como poderia ser esse código sem o padrão. Listagem 3. Classe Artigo (faz o papel de contexto no padrão State). public class Artigo { private EstadoArtigo estado; public void setestado(estadoartigo estado) { this.estado = estado; / 28

4 public void submetido() { estado.submetido(this); public void validadocomsucesso() { estado.validadocomsucesso(this); public void validadosemsucesso() { estado.validadosemsucesso(this); Listagem 4. Exemplo de implementação tradicional sem usar o padrão State. public class RevisaoArtigoService { /* mais código aqui */ public void revisar(artigo artigo) { /* mais código aqui */ if (artigo.getestado().equals( ACEITO_PARA_REVISAO)) { if (estasatisfatorio(artigo)) { artigo.setestado(aceito_para_publicacao); else if (correcaopodeserfeita(artigo)) { artigo.setestado(aceito_com_correcoes); else { artigo.setestado(recusado); Implementação do padrão com Enum e JPA Uma forma interessante de se implementar os estados é por meio do uso dos tipos enumerados (Enums) oferecidos pelo Java. A ideia é simples: cria-se uma enum com métodos para cada transição e constantes que implementem esses métodos de acordo com suas respectivas lógicas. Normalmente, numa aplicação real, precisaremos armazenar os dados dos artigos e seus estados em um banco de dados. Vamos assumir que queremos usar a Java Persistence API (JPA) com Hibernate para armazenar os objetos no banco de dados, incluindo aí os estados da máquina. O problema, neste caso, é que o Hibernate não oferece um suporte adequado à persistência de enums (existe anotação para isso, mas existem problemas para seu uso usar strings para mapeamento de chaves etc.). Mesmo numa implementação de máquina de estados sem enums, questão dos objetos transientes que já existem dentro do banco (quando um estado necessita realizar uma transição, ele criaria uma nova instância de um estado já existente). Para contornar esse problema, podemos representar as constantes em duas partes, usando uma classe principal (esta, mapeada via Hibernate), a qual delega para um enum que representa o estado da máquina de estados propriamente dito. A Listagem 5 mostra um exemplo de como poderia ser esse código. Desta forma, é possível utilizar as constantes da classe EstadoArtigo (a lógica da máquina de estados também das facilidades de persistência oferecidas pelo Hibernate. Repare que implementamos no contexto da enum todos os métodos de transição, mas com uma implementação default (como se fosse uma classe abstrata). Dessa forma, as constantes enume- zerem sentido. Lembramos que a classe de contexto, Artigo, permanece com o mesmo código. Listagem 5. Implementação do padrão State com Enums e suporte de public class EstadoArtigo { public static EstadoArtigo RECEBIDO = new EstadoArtigo(1, EstadosMaquinaEstados. RECEBIDO); public static EstadoArtigo RECUSADO = new EstadoArtigo(2, EstadosMaquinaEstados. RECUSADO); public static EstadoArtigo ACEITO_PARA_REVISAO= new EstadoArtigo(3, EstadosMaquinaEstados. ACEITO_PARA_REVISAO); public static EstadoArtigo ACEITO_PARA_PUBLICACAO=new EstadoArtigo(4, EstadosMaquinaEstados.ACEITO_PARA_PUBLICACAO); public static EstadoArtigo ACEITO_COM_CORRECOES = new EstadoArtigo(5, private int private EstadosMaquinaEstados estadomaquina; private EstadoArtigo(int EstadosMaquinaEstados estadomaquina) { this this.estadomaquina = estadomaquina; protected void submetido(artigo artigo) { estadomaquina.submetido(artigo); protected void validadocomsucesso(artigo artigo) { estadomaquina.validadocomsucesso(artigo); protected void validadosemsucesso(artigo artigo) { estadomaquina.validadosemsucesso(artigo); 29 \

5 protected void satisfatorio(artigo artigo) { estadomaquina.satisfatorio(artigo); protected void apresentaerrosbasicos(artigo artigo) { estadomaquina.apresentaerrosbasicos(artigo); protected void recusado(artigo artigo) { estadomaquina.recusado(artigo); private static enum EstadosMaquinaEstados { void satisfatorio(artigo artigo) { lancarexcecaodefault( satisfatorio ); void apresentaerrosbasicos(artigo artigo) { lancarexcecaodefault( apresentaerrosbasicos ); private void lancarexcecaodefault(string evento) { throw new UnsupportedOperationException( O artigo está em um estado inválido para a ocorrência do evento + evento + : + this); RECEBIDO { void validadocomsucesso(artigo artigo) { ACEITO_PARA_REVISAO); void validadosemsucesso(artigo artigo) { RECUSADO);, ACEITO_PARA_REVISAO { void satisfatorio(artigo artigo) { ACEITO_PARA_PUBLICACAO); void apresentaerrosbasicos(artigo artigo) { ACEITO_COM_CORRECOES); void recusado(artigo artigo) { RECUSADO);, /* implementacao das transicoes omitidas para os seguintes estados... */ RECUSADO, ACEITO_PARA_PUBLICACAO, ACEITO_COM_CORRECOES; Máquinas de estados são uma abstração recorrente em diversos tipos de sistema, constituindo um poderoso instrumento de modelagem e comunicação para usuários e desenvolvedores. Neste artigo, vimos como podemos levar as vantagens desse modelo até o nível do código por meio do padrão State, evitando- -se, assim, o espalhamento das lógicas de transição por diferentes partes do sistema. Destacamos também uma possibilidade de implementação particular para o caso em que é necessária a persistência dos es- Procura conhecer o estado das tuas ovelhas; cuida bem dos teus rebanhos. (Pv 27:23) Gazola /para saber mais /referências void submetido(artigo artigo) { lancarexcecaodefault( submetido ); void validadocomsucesso(artigo artigo) { lancarexcecaodefault( validadocomsucesso ); void validadosemsucesso(artigo artigo) { lancarexcecaodefault( validadosemsucesso ); void recusado(artigo artigo) { lancarexcecaodefault( recusado ); / 30

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Programaçã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 mais

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Heranç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 mais

Computação II Orientação a Objetos

Computaçã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 mais

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Recapitulando. 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 mais

PROCESSO SELETIVO PARA ESTÁGIO REMUNERADO NO TRIBUNAL DE CONTAS DO ESTADO DO MARANHÃO ENSINO SUPERIOR - INFORMÁTICA

PROCESSO SELETIVO PARA ESTÁGIO REMUNERADO NO TRIBUNAL DE CONTAS DO ESTADO DO MARANHÃO ENSINO SUPERIOR - INFORMÁTICA PROCESSO SELETIVO PARA ESTÁGIO REMUNERADO NO TRIBUNAL DE CONTAS DO ESTADO DO MARANHÃO ENSINO SUPERIOR - INFORMÁTICA LEIA ATENTAMENTE AS INSTRUÇÕES ABAIXO. Você recebeu um CADERNO DE QUESTÕES contendo 5

Leia mais

Enums em Java: utilização e persistência

Enums em Java: utilização e persistência Enums em Java: utilização e persistência Jadson José dos Santos jadsonjs@gmail.com Nas primeiras versões da linguagem Java, a única forma que existia para se utilizar constantes enumeradas era através

Leia mais

Classe Abstrata e Interface

Classe 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 mais

PROGRAMAÇÃO ORIENTADA A OBJETOS II -TÉCNICAS DE OO. Prof. Angelo Augusto Frozza, M.Sc.

PROGRAMAÇÃO ORIENTADA A OBJETOS II -TÉCNICAS DE OO. Prof. Angelo Augusto Frozza, M.Sc. PROGRAMAÇÃO ORIENTADA A OBJETOS II -TÉCNICAS DE OO Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 4. Técnicas de Orientação a Objetos Classes e objetos Herança Métodos Subscritos

Leia mais

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro A importância da UML para projetar sistemas. Principais características do diagrama de classes e de sequência.

Leia mais

INF1013 MODELAGEM DE SOFTWARE

INF1013 MODELAGEM DE SOFTWARE INF1013 MODELAGEM DE SOFTWARE Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 3 Modelo de Classes de Software Navegação 1 Programa Capítulo 3 Modelo de Classes

Leia mais

Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

Singleton 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 mais

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Paradigmas 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 mais

Introdução à UML. Prof. Jesus José de Oliveira Neto

Introdução à UML. Prof. Jesus José de Oliveira Neto Introdução à UML Prof. Jesus José de Oliveira Neto UML Linguagem de Modelagem Unificada Linguagem visual utilizada para modelar softwares baseados no paradigma de orientação a objetos UML não é uma linguagem

Leia mais

Carlos S. Rodrigues Leonardo Lino Vieira Eric Felipe Barboza Antonio Vasconcellos

Carlos S. Rodrigues Leonardo Lino Vieira Eric Felipe Barboza Antonio Vasconcellos Carlos S. Rodrigues Leonardo Lino Vieira Eric Felipe Barboza Antonio Vasconcellos Introdução Necessidade de diminuir a complexidade na interação código-banco de dados para o programador,além de diminuir

Leia mais

Modelagem Usando Orientação à Objetos (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Modelagem Usando Orientação à Objetos (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 Modelagem Usando Orientação à Objetos (Programação Orientada a Objetos) Site : http://www1.univap.br/~wagner/ec.html Prof. Responsáveis

Leia mais

Linguagem de Programação. Diagrama de classes

Linguagem de Programação. Diagrama de classes Linguagem de Programação Diagrama de classes Joyce França Professora de Ciência da Computação - IFNMG 2 Agenda Diagrama de classes Herança Associação Agregação Exercícios 3 Diagrama de classes Mostra um

Leia mais

Requisitos de sistemas

Requisitos de sistemas Requisitos de sistemas Unidade III - Casos de Uso Identificação de casos de uso Conceitos de orientação a objetos Modelagem do diagrama de classes e casos de uso 1 Casos de uso CONCEITO Especifica o comportamento

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO

PROGRAMAÇÃ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 mais

Tipos, Literais, Operadores

Tipos, 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 mais

Tipos, Literais, Operadores

Tipos, 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 mais

Construtores e Especificadores de Acesso

Construtores 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 mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.1 http://www.dcc.ufrj.br/~fabiom/java Visibilidade Nem todos os campos e operações de um objeto são para consumo externo; várias delas podem

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 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 mais

INF1013 MODELAGEM DE SOFTWARE

INF1013 MODELAGEM DE SOFTWARE INF1013 MODELAGEM DE SOFTWARE Departamento de Informática Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 6 Padrão State Exercício 1 Programa Capítulo 6 Padrão State Exercício Introdução Alguns

Leia mais

Prof. Vicente Paulo de Camargo UML - INTRODUÇÃO UML = Unified Modeling Language = linguagem de modelagem de sistemas Permite especificar, visualizar e documentar modelos de software orientados a objetos

Leia mais

PROJETO DE DADOS PROJETO ARQUITETURAL BÁSICO. Projeto de Programas PPR0001

PROJETO DE DADOS PROJETO ARQUITETURAL BÁSICO. Projeto de Programas PPR0001 1 PROJETO DE DADOS PROJETO ARQUITETURAL BÁSICO Projeto de Programas PPR0001 2 Atividades Envolvidas Preliminar Realizar a organização dos dados considerando a tecnologia que será utilizada em módulos (exemplo:

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Subtipagem e Coringas Lista é subtipo de Lista para qualquer T Não podemos chamar métodos em Lista

Leia mais

Computação II Orientação a Objetos

Computaçã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 mais

Linguagem de Programação II Implementação

Linguagem 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 mais

UML. Modelando um sistema

UML. Modelando um sistema UML Modelando um sistema Fases do desenvolvimento de Software Análise de requisitos Análise Projeto Programação Análise de Requisitos Esta fase captura as intenções e necessidades dos usuários do sistema

Leia mais

Universidade 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. 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 mais

Definição. Em POO, a abstração é o processo de esconder os detalhes de implementação de uma aplicação.

Definição. Em POO, a abstração é o processo de esconder os detalhes de implementação de uma aplicação. Abstração JAVA Definição Em POO, a abstração é o processo de esconder os detalhes de implementação de uma aplicação. Em Java, a abstração é alcançada através de classes abstratas e interfaces. Classes

Leia mais

INF1013 MODELAGEM DE SOFTWARE

INF1013 MODELAGEM DE SOFTWARE INF1013 MODELAGEM DE SOFTWARE Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 2 A Modelagem Dinâmica Diagramas de Interação Diagrama de Seqüência 1 Programa

Leia mais

GRASP. Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé)

GRASP. Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé) GRASP Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé) O que vimos na última aula? Introdução a padrões O que são? Por que utilizá-los? Padrões GRASP O que são? Quais serão apresentados na disciplina?

Leia mais

Computação II Orientação a Objetos

Computaçã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 mais

PROGRAMAÇÃO ORIENTADA A

PROGRAMAÇÃO ORIENTADA A PROGRAMAÇÃO ORIENTADA A OBJETOS II -TÉCNICAS DE OO Prof. Angelo Augusto Frozza, MS M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 4. Técnicas de Orientação a Objetos Classes e objetos Herança Métodos Subscritos

Leia mais

Desenvolva de qualquer sistema operacional para qualquer sistema operacional. Sem limites.

Desenvolva de qualquer sistema operacional para qualquer sistema operacional. Sem limites. Desenvolva de qualquer sistema operacional para qualquer sistema operacional. Sem limites. Gabriel Pereira, Especialista em Java da Clarify Projete e desenvolva situações de Mercado com a criação de um

Leia mais

Palavras Reservadas da Linguagem Java

Palavras 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 mais

JUnit. Alexandre Menezes Silva Eduardo Manuel de Freitas Jorge

JUnit. Alexandre Menezes Silva Eduardo Manuel de Freitas Jorge JUnit Alexandre Menezes Silva alexandre_crvg@hotmail.com Eduardo Manuel de Freitas Jorge emjorge1974@gmail.com 0 Sumário O que é?... 2 Pra que serve?... 2 Arquitetura... 2 Método de comparação assertequals...

Leia mais

PADRONIZAÇÃO 10. INTERFACES PADRONIZAÇÃO CONTRATOS

PADRONIZAÇÃ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 mais

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU Aula 5 POO 1 Encapsulamento Profa. Elaine Faria UFU - 2019 Sobre o Material Agradecimentos Aos professores José Gustavo e Fabiano, por gentilmente terem cedido seus materiais. Os slides consistem de adaptações

Leia mais

Namespaces, Classes e Métodos.

Namespaces, Classes e Métodos. . Linguagem de Programação III Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento Acadêmico de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Linguagem

Leia mais

Model Driven Development (MDD)

Model Driven Development (MDD) Model Driven Development (MDD) Mestrado em Engenharia de Produção e Sistemas Computacionais Profa. Adriana Pereira de Medeiros adrianamedeiros@puro.uff.br Sumário Introdução Desenvolvimento de Software

Leia mais

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos)

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos) Orientação a Objetos Parte I Introdução a POO (Programação Orientada a Objetos) Histórico Gerações de Linguagens de Programação Primeira Geração: Linguagem de máquina Segunda Geração: Linguagem de montagem

Leia mais

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Encapsulamento 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 mais

Lógica de Programação para Jogos

Lógica de Programação para Jogos Lógica de Programação para Jogos Curso de Capacitação www.abrindoojogo.com.br Pressione Start e inicie a sua carreira no desenvolvimento de jogos digitais. Focado no aluno que ainda não se considera um

Leia mais

Padrões Fábrica. Simple Factory Factory Method

Padrões Fábrica. Simple Factory Factory Method Universidade Federal de Uberlândia Faculdade de Computação Disciplina: POO2 Prof. Fabiano Azevedo Dorça Padrões Fábrica Simple Factory Padrões Fábrica Padrão Simple Factory: fornece interfaces para criar

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Pacotes e Encapsulamento Msc. Paulo de Tarso F. Júnior 1 Introdução Permite o agrupamento de classes em uma coleção chamada pacote Um pacote é uma coleção de classes e interfaces

Leia mais

FAURGS HCPA Edital 06/2010 PS 51 ANALISTA DE SISTEMA I Fábrica de Aplicativos Pág. 1

FAURGS HCPA Edital 06/2010 PS 51 ANALISTA DE SISTEMA I Fábrica de Aplicativos Pág. 1 Pág. 1 HOSPITAL DE CLÍNICAS DE PORTO ALEGRE EDITAL Nº 06/20 /2010 0 DE PROCESSOS SELETIVOS GABARITO APÓS RECURSOS PROCESSO SELETIVO 51 ANALISTA DE SISTEMAS I Fábrica de Aplicativos 01. A 11. E 21. C 02.

Leia mais

Visões Arquiteturais. Visões Arquiteturais

Visões Arquiteturais. Visões Arquiteturais Visões Arquiteturais Separar diferentes aspectos em visões separadas com o objetivo de gerenciar complexidade. Cada visão descreve diferentes conceitos da Engenharia. Visões permitem reduzir a quantidade

Leia mais

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual Aula 09 Objetivo Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual Banco de Dados 1. Crie um novo projeto

Leia mais

Esta 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; 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 mais

1 Introdução e Conceitos básicos

1 Introdução e Conceitos básicos 1 Introdução e Conceitos básicos Aula 02 Sumário Capítulo 1 Introdução e Conceitos básicos 1.1 Modelos 1.2 Tipos primitivos de dados 1.3 Tipo Abstrato de dados 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2

Leia mais

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Linguagem 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 mais

Computação II Orientação a Objetos

Computaçã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 mais

Introdução à Análise e Projeto de Sistemas

Introdução à Análise e Projeto de Sistemas Introdução à I. O Que vamos fazer na Disciplina? Saber uma linguagem de programação orientada a objeto (OO) não é suficiente para criar sistemas OO Tem que saber Análise e Projeto OO (APOO) Isto é, Análise

Leia mais

Injeção de Dependências e Spring

Injeção de Dependências e Spring Injeção de Dependências e Spring Daniel Cukier Prof. Fabio Kon IME-USP Conteúdo Exemplo Melhor maneira de aprender Injeção de Dependência (DI) Spring Service Locator Daniel Cukier - IME/USP 2/29 Exemplo

Leia mais

ANÁLISE DE SISTEMAS. Diagrama de atividades. por. Antônio Maurício Pitangueira

ANÁLISE DE SISTEMAS. Diagrama de atividades. por. Antônio Maurício Pitangueira ANÁLISE DE SISTEMAS Diagrama de atividades por Antônio Maurício Pitangueira 1 Diagrama de atividade Há diversos diagramas da UML que descrevem os aspectos dinâmicos de um sistema. diagramas de estados,

Leia mais

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Classes 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 mais

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos Profa. Juliana Santiago Teixeira Disciplina: Programação Orientada a Objetos I Tema da aula Introdução ao paradigma de programação: Orientado a Objetos Paradigma Paradigma é a filosofia adotada na construção

Leia mais

Televisao tamanho tela emitirsom. conectarperifericos

Televisao tamanho tela emitirsom. conectarperifericos 1 - Introdução a Programação Orientada a Objeto Para tentar solucionar o problema do baixo reaproveitamento de código, surgiu a idéia da Programação Orientada a Objeto (POO). A POO não é nova, sua formulação

Leia mais

A classe ArrayList. IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

A classe ArrayList. IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli A classe ArrayList Java oferece uma classe chamada ArrayList, que permite a criação e manipulação de objetos; Um objeto ArrayList é semelhante a um vetor de objetos, mas oferece inúmeras vantagens em relação

Leia mais

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Universidade 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 mais

Herança Tiago Eugenio de Melo

Herança Tiago Eugenio de Melo Herança Tiago Eugenio de Melo tiago@comunidadesol.org Herança Conceito: Herança é a capacidade de especializar tipos de objetos (classes), de forma que os tipos especializados contenham, além de características

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Prof. Luiz Antonio do Nascimento Modelagem de software O que deve ser feito? Espec. sistema / Eng. sistemas Modelagem do processo de negócios Análise de requisitos O que tem que

Leia mais

Aula 3 POO 1 Classe e Objeto. Profa. Elaine Faria UFU

Aula 3 POO 1 Classe e Objeto. Profa. Elaine Faria UFU Aula 3 POO 1 Classe e Objeto Profa. Elaine Faria UFU - 2019 Sobre o Material Agradecimentos Aos professores José Gustavo e Fabiano, por gentilmente terem cedido seus materiais. Os slides consistem de adaptações

Leia mais

Classes, Métodos e Propriedades

Classes, Métodos e Propriedades Ambiente de Programação Visual Classes, Métodos e Propriedades Prof. Mauro Lopes 1-31 22 Objetivos Nesta aula iremos dar continuidade aos elementos de programação da Linguagem C#. Iremos apresentar de

Leia mais

Instituto Superior de Engenharia de Lisboa

Instituto 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 mais

INF1404 MODELAGEM DE SISTEMAS

INF1404 MODELAGEM DE SISTEMAS INF1404 MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 9 A Modelagem Dinâmica Diagramas de Interação Diagrama de Seqüência 1 Programa

Leia mais

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real: Introdução a Orientação a Objetos com Java Autor: Professor Victor Augusto Zago Menegusso. Orientação a Objetos É um paradigma de programação que define a estrutura de um programa baseado nos conceitos

Leia mais

Linguagem de Programação III

Linguagem 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 mais

Padrõ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

Padrõ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 mais

Java para Desktop. Programação Orientada à Objetos 2 JSE

Java para Desktop. Programação Orientada à Objetos 2 JSE Java para Desktop Programação Orientada à Objetos 2 JSE Encapsulamento significa "ocultar informações, ele define que cada objeto contém todos os detalhes de implementação necessários sobre como ele funciona

Leia mais

Atribuições: Valores, Ponteiros e Referências

Atribuiçõ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 mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Múltiplos aliens Por enquanto todos os nossos aliens se parecem e se comportam do mesmo jeito, mas e se

Leia mais

Compiladores Análise Semântica

Compiladores Análise Semântica Compiladores Análise Semântica Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp Árvores Sintáticas Abstratas (ASTs) A árvore de análise sintática tem muita informação redundante Separadores,

Leia mais

POO UML e Outros Conceitos. Prof. Vicente Paulo de Camargo

POO UML e Outros Conceitos. Prof. Vicente Paulo de Camargo Prof. Vicente Paulo de Camargo UML - INTRODUÇÃO UML = Unified Modeling Language = linguagem de modelagem de sistemas Permite especificar, visualizar e documentar modelos de software orientados a objetos

Leia mais

Organizando seus Testes Funcionais AUMENTANDO A MANUTENIBILIDADE DE TESTES FUNCIONAIS ATRAVÉS DA ORIENTAÇÃO A OBJETOS.

Organizando seus Testes Funcionais AUMENTANDO A MANUTENIBILIDADE DE TESTES FUNCIONAIS ATRAVÉS DA ORIENTAÇÃO A OBJETOS. page objects_ PAGE OBJECTS Organizando seus Testes Funcionais AUMENTANDO A MANUTENIBILIDADE DE TESTES FUNCIONAIS ATRAVÉS DA ORIENTAÇÃO A OBJETOS. Testes são parte fundamental do processo de desenvolvimento

Leia mais

Técnicas para Reutilização de Software

Técnicas para Reutilização de Software DCC / ICEx / UFMG Técnicas para Reutilização de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Panorama de Reutilização Frameworks Padrões de projeto Aplicações configuráveis Padrões de

Leia mais

UML Diagramas Estruturais Diagrama de Componentes

UML Diagramas Estruturais Diagrama de Componentes UML Diagramas Estruturais Diagrama de Componentes Representa um modelamento físico dos componentes de software de um determinado Sistema Um componente realiza um conjunto de interfaces e contém em seu

Leia mais

Collections Framework

Collections Framework Collections Framework 1 Arrays p Manipular array é bastante trabalhoso. p Dificuldades aparecem em diversos momentos: n não podemos redimensionar um array em Java; n é impossível buscar diretamente por

Leia mais

PMR Computação para Automação. PMR Computação para Mecatrônica. Exercício Programa 2 - Versão Package BancoDeDados

PMR Computação para Automação. PMR Computação para Mecatrônica. Exercício Programa 2 - Versão Package BancoDeDados PMR2300 - Computação para Automação PMR3201 - Computação para Mecatrônica Exercício Programa 2 - Versão 2015 Package BancoDeDados [ 1] O EP2 explora os seguintes conceitos: packag es, controle de visibilidade

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Ciência da Computação Prof. Elias Ferreira Elaborador por: Ana Claudia Bastos Loureiro Monção JUNIT Teste de Software Processo de Software Um processo de software pode ser visto como o conjunto de atividades,

Leia mais

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F. Diagramas UML Classe, Seqüência e Atividades Marcio E. F. Maia Disciplina: Engenharia de Software Professora: Rossana M. C. Andrade Curso: Ciências da Computação Universidade Federal do Ceará 15 de maio

Leia mais

Ciência da Computação. Análise e Projeto Orientado a Objetos UML. Anderson Belgamo

Ciência da Computação. Análise e Projeto Orientado a Objetos UML. Anderson Belgamo Ciência da Computação Análise e Projeto Orientado a Objetos UML Anderson Belgamo 1 Evolução do Software O rápido crescimento da capacidade computacional das máquinas resultou na demanda por sistemas de

Leia mais

POO29004 Programação Orientada a Objetos

POO29004 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 mais

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc. Orientação a Objetos Revisão Conceitos CLASSE CLASSIFICAÇÃO GENERALIZAÇÃO ESPECIALIZAÇÃO HERANÇA INTERFACES POLIMORFISMO SOBRECARGA ENCAPSULAMENTO ABSTRAÇÃO MODULARIZAÇÃO 9 CLASSE Classe é um agrupamento

Leia mais

Análise e Projeto Orientados por Objetos

Aná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 mais

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos DCC / ICEx / UFMG Pensar Orientado a Objetos Projeto Orientado a Objetos Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Onde quer que você olhe no mundo real, você vê objetos Pessoas, animais, plantas,

Leia mais

Padrão de projeto de software

Padrão de projeto de software Padrão de projeto de software Paulo Venancio Lopes e Daniel Sguillaro Nome Roupa Suja Se Lava Em Casa. Intenção Dar maior capacidade e flexibilidade ao conceito de entidade (no contexto de persitência

Leia mais

INE 5612 Professor: Frank Siqueira. Leonardo Silva Jean Ercilio Thiago

INE 5612 Professor: Frank Siqueira. Leonardo Silva Jean Ercilio Thiago INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean Ercilio Thiago DESENVOLVEDORES JAVA EM TODO MUNDO LIDER GAVIN KING JBOSS MANTEVE O SUPORTE História Hibernate foi criado por

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato

Leia mais

Programação Orientada a Objetos

Programaçã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 mais

Composite. Pronunciação americana: compósit Pronunciação canadense (Britânica): cómposit

Composite. Pronunciação americana: compósit Pronunciação canadense (Britânica): cómposit Pronunciação Pronunciação americana: compósit Pronunciação canadense (Britânica): cómposit Um problema a resolver: editor de documentos Para introduzir este padrão (e alguns outros), usaremos o exemplo

Leia mais

Linguagem de Programação IV Introdução

Linguagem 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 mais

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Cronograma das Aulas. Hoje você está na aula Semana

Leia mais

Pacotes Organizando suas classes e bibliotecas

Pacotes Organizando suas classes e bibliotecas Pacotes Organizando suas classes e bibliotecas 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 mais

Lógica de Programação e Algoritmos com exemplos na linguagem JAVA

Lógica de Programação e Algoritmos com exemplos na linguagem JAVA Lógica de Programação e Algoritmos com exemplos na linguagem JAVA Cap. 5 Programação Estruturada: Funções Conteúdo: 5.1 Programação estruturada ou modular... 66 5.2 Funções... 67 5.3 Passagem de parâmetros...

Leia mais

Polimorfismo. PARTE II: Java e OO. Polimorfismo. Polimorfismo. Polimorfismo. Polimorfismo

Polimorfismo. PARTE II: Java e OO. Polimorfismo. Polimorfismo. Polimorfismo. Polimorfismo PARTE II: Java e OO Interface Herança Herança e polimorfismo Classes e métodos abstratos : muitas formas de implementação de uma operação Permite esconder diferentes implementações atrás da mesma interface

Leia mais