EVOLUINDO ARQUITETURAS REATIVAS. Ubiratan Soares QCONSP / 2017

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

Download "EVOLUINDO ARQUITETURAS REATIVAS. Ubiratan Soares QCONSP / 2017"

Transcrição

1 EVOLUINDO ARQUITETURAS REATIVAS Ubiratan Soares QCONSP / 2017

2 O QUE É UMA ARQUITETURA EM MOBILE?

3 FLUX REDUX MVP CLEAN MVI MVVM VIPER MVC

4

5 PRINCÍPIOS DE ARQUITETURA Organização Facilidade em se encontrar o que se precisa Menor impedância para se resolver bugs Menos dor ao escalar em tamanho (codebase e devs) Estilo de projeto unificado, definido e defendido pelo time

6 MOBILE CHALLENGES Interações com usuário e eventos de sistema são assíncronos I/O deve ser concorrente Processamento pesado deve ser concorrente Fragmentação de plataformas ETC.

7 UMA QUEIXA COMUM NA COMUNIDADE MOBILE?

8 TEM PELO MENOS UM UNIT TEST NO APP?

9 EM MOBILE, ARQUITETURA É CRÍTICA PARA TESTABILIDADE

10 QUAL ARQUITETURA ESCOLHER ENTÃO???

11

12

13

14

15 MIXED FEELINGS

16

17 NÃO HÁ SILVER BULLETS!

18 MODEL VIEW PRESENTER

19 DB UI PRESENTATION LAYER DATA LAYER REST... ETC

20

21 public interface ViewDelegate { void displayresults(datamodel model); void networkingerror(); void displayemptystate(); void displayerrorstate(); // More delegation

22 public class MainActivity extends AppCompatActivity implements ViewDelegate { Presenter presenter; // How to resolve this protected void onstart() { super.onstart(); presenter.bindview(this); public void displayresults(datamodel model) { // Put data into public void networkingerror() { // Up to public void displayemptystate() { // And this public void displayerrorstate() { // Please, do not mess with your user

23 public class Presenter { public void bindview(viewdelegate delegate) { this.delegate = delegate; public void fetchdata() { source.fetchdata(new DataSource.Callback() public void ondataloaded(datamodel model) { public void onerror(throwable t) { ); if (t instanceof NetworkingError) { delegate.networkingerror(); else if (t instanceof NoDataAvailable) {

24 REST GATEWAY INTEGRATION TESTS (DOUBLES) DATAMODEL CALLBACK DATASOURCE PRESENTER VIEW DELEGATION CALLBACKS UNIT TESTS (Mocked Contract) UNIT TESTS (Mocked Source + Mocked View) PLATAFORM CONTROLLER FUNCTIONAL UI TESTS INTEGRATION TESTS

25 Response Model String description = Blah String date = T19:35:24Z int step = 2 Domain Model String description = Blah LocalDateTime datetime = (JSR310) TrackingStep currentstep = (enum) DATA MODEL View Model String description = Blah String formatteddate = 26/02/2010 String currentstep = Concluído

26 PROBLEMAS EM POTENCIAL Qual representação de dados utilizar? Unificada ou separada? Onde aplicar parsing? E formatação para a UI? Callbacks aninhados Memory leaks no nível do mecanismo de entrega Etc

27 BRACE YOURSELVES RX IS COMING

28 THE RXJAVA REVOLUTION RxJava permite operações assíncronas em um estilo síncrono, turbinadas por operadores funcionais Threading transparente Tratamento unificado de erros via adição ao Observer Pattern Battle-tested

29 COMO ADICIONAR RX NESSA ARQUITETURA??

30 DB UI PRESENTATION LAYER DATA LAYER REST... ETC Callback(T) Callback(T) Callback(T)

31 SUBSTITUIR CALLBACKS POR SEQUÊNCIAS OBSERVÁVEIS

32 PRIMEIRA INTERAÇÃO CAMADA DE DADOS REATIVA

33 REST GATEWAY DATA SOURCE Observable<T> OBSERVER<T> PRESENTER VIEW DELEGATION Callback(T) VIEW

34 public interface HelpDeskEventsSource { Observable<HelpDeskEvent> fetchwith(messagesfororderparameters params); Observable<HelpDeskEvent> sendmessage(messagetosellerparameters params); Observable<HelpDeskEvent> requiremediation(mediationparameters params); ADEUS CALLBACKS!!!

35 public class HelpDeskStreamInfrastructure implements HelpDeskEventsSource public Observable<HelpDeskEvent> fetchwith(messagesfororderparameters params) { return public Observable<HelpDeskEvent> sendmessage(messagetosellerparameters params) { MessageToSellerBody body = SendMessageToSellerBodyMapper.convert(params); return restapi.sendhelpdeskmessagetoseller(body).subscribeon(schedulers.io()).flatmap(emptybody -> fetchwith(samefromseller(params))); Chained request, easy!!!!

36 VANTAGENS OBSERVADAS Facilidades via frameworks utilitários para REST / DB Validação de dados de entrada e tradução de modelos como etapas do pipeline Tratamento de erros, auto retry, exponential backoff no baixo nível

37 PROBLEMAS OBSERVADOS Consumir os dados no nível da apresentação nos força a rodar comportamentos na thread principal do app (orquestração dos callbacks) Indireção forçada para prover Scheduler via DI, para propósitos de testes Muitas responsabilidades no Presenter

38 SEGUNDA INTERAÇÃO CAMADA DE APRESENTAÇÃO REATIVA

39 REST GATEWAY DATA SOURCE Observable<T> SUBSCRIPTION PRESENTER VIEW DELEGATION Observable<T> OBSERVER<T> VIEW

40 public interface SomeView<T> { Func1<Observable<T>, Subscription> results(); Func1<Observable<Unit>, Subscription> showemptystate(); Func1<Observable<Unit>, Subscription> hideemptystate(); Func1<Observable<Unit>, Subscription> showloading(); Func1<Observable<Unit>, Subscription> hideloading(); // More delegation

41 public static <T> Subscription bind(observable<t> observable, Func1<Observable<T>, Subscription> uifunc) { return uifunc.call(observable); public static <T> Func1<Observable<T>, Subscription> uifunction(action1<t> uiaction) { return uifunction(uiaction, () -> {); public static <T> Func1<Observable<T>, Subscription> uifunction(action1<t> uiaction, Action0 done) { return observable -> observable.observeon(androidschedulers.mainthread()).subscribe( uiaction, throwable -> Logger.e(throwable.getMessage()), done );

42 public static <T> Subscription bind(observable<t> observable, Func1<Observable<T>, Subscription> uifunc) { return uifunc.call(observable); public static <T> Func1<Observable<T>, Subscription> uifunction(action1<t> uiaction) { return uifunction(uiaction, () -> {); public static <T> Func1<Observable<T>, Subscription> uifunction(action1<t> uiaction, Action0 done) { return observable -> observable.observeon(androidschedulers.mainthread()).subscribe( uiaction, throwable -> Logger.e(throwable.getMessage()), done );

43 public static <T> Subscription bind(observable<t> observable, Func1<Observable<T>, Subscription> uifunc) { return uifunc.call(observable); public static <T> Func1<Observable<T>, Subscription> uifunction(action1<t> uiaction) { return uifunction(uiaction, () -> {); public static <T> Func1<Observable<T>, Subscription> uifunction(action1<t> uiaction, Action0 done) { return observable -> observable.observeon(androidschedulers.mainthread()).subscribe( uiaction, throwable -> Logger.e(throwable.getMessage()), done );

44 public class HelpDeskMessagingActivity extends BaseActivity implements HelpDeskMessagesStreamView public Func1<Observable<String>, Subscription> restorenotsentmessage() { return uifunction(message -> { Toast.makeText(this, "Erro ao enviar mensagem", LENGTH_SHORT).show(); messageinput.settext(message); public Func1<Observable<Unit>, Subscription> enablecomplaintoption() { return uifunction(action -> public Func1<Observable<Unit>, Subscription> disablecomplaintoption() { return uifunction(action -> public Func1<Observable<Unit>, Subscription> showemptystate() { return uifunction(action -> emptystatecontainer.setvisibility(visible)); // More delegate methods

45 public class HelpDeskMessagingActivity extends BaseActivity implements HelpDeskMessagesStreamView public Func1<Observable<String>, Subscription> restorenotsentmessage() { return uifunction(message -> { Toast.makeText(this, "Erro ao enviar mensagem", LENGTH_SHORT).show(); messageinput.settext(message); public Func1<Observable<Unit>, Subscription> enablecomplaintoption() { return uifunction(action -> public Func1<Observable<Unit>, Subscription> disablecomplaintoption() { return uifunction(action -> public Func1<Observable<Unit>, Subscription> showemptystate() { return uifunction(action -> emptystatecontainer.setvisibility(visible)); // More delegate methods

46 public void userrequiredmediation(string productid, String sellerid) { MediationParameters parameters = new RequiredMediationParameters.Builder().productId(productId) //.sellerid(sellerid).build(); executionpipeline(parameters); PRESENTER LEVEL private void executionpipeline(mediationparameters parameters) { Observable<HelpDeskEventViewModel> execution = source.requiremediation(parameters).doonsubscribe(this::preparetoload).map(viewmodelmappers::map).flatmap(observable::from).dooncompleted(this::finishloadingmessages); subscription().add(bind(execution, view().onmessagesloaded()));

47 VANTAGENS OBSERVADAS Presenter não precisa da noção de threading Possibilidade de combinação de múltiplas fontes de forma organizada Presenter passar a orquestrar a UI através de um pipeline de execução bem definido Tradução de ViewModels é uma etapa do pipeline

48 PROBLEMAS OBSERVADOS Protocolo View ainda estava gordo Repetição de código entre Presenters, normalmente relacionada a comportamentos de UI similares - Mostrar empty state se não houver dados - Mostrar loading ao iniciar operação; esconder ao terminar - Controlar interação com Pull-to-refresh - Estado de erro no caso de problemas, caso não exista conteúdo - Vários outros

49 TERCEIRA INTERAÇÃO REACTIVE VIEW SEGREGATION

50 public interface SomeView<T> { Func1<Observable<T>, Subscription> results(); Func1<Observable<Unit>, Subscription> showemptystate(); Func1<Observable<Unit>, Subscription> hideemptystate(); Func1<Observable<Unit>, Subscription> showloading(); Func1<Observable<Unit>, Subscription> hideloading(); Func1<Observable<Unit>, Subscription> networkerror(); Func1<Observable<Unit>, Subscription> networkunavailable(); Func1<Observable<Unit>, Subscription> networkslow();

51 UI BEHAVIOR... UI BEHAVIOR UI BEHAVIOR UI BEHAVIOR VIEW PROTOCOL

52 public interface EmptyStateView<T> { Func1<Observable<Unit>, Subscription> showemptystate(); Func1<Observable<Unit>, Subscription> hideemptystate(); public interface LoadingView<T> { Func1<Observable<Unit>, Subscription> showloading(); Func1<Observable<Unit>, Subscription> hideloading();

53 public interface NetworkingReporterView<T> { Func1<Observable<Unit>, Subscription> networkerror(); Func1<Observable<Unit>, Subscription> networkunavailable(); Func1<Observable<Unit>, Subscription> networkslow(); public interface SomeView<T> extends LoadingView, EmptyStateView, NetworkingReporterView { Func1<Observable<T>, Subscription> displayresults();

54 - Cada comportamento poderia ter o seu mini-presenter associado, e o Presenter grande faria a orquestração dos colaboradores - Melhor estratégia : fazer a composição ser uma etapa do pipeline!!!

55 f(g(x))

56 public class LoadingWhileProcessing<T> implements Observable.Transformer<T, T> { private PublishSubject<Unit> show, hide = PublishSubject.create(); public Subscription bindloadingcontent(loadingview view) { CompositeSubscription composite = new CompositeSubscription(); composite.add(bind(show, view.showloading())); composite.add(bind(hide, view.hideloading())); return public Observable<T> call(observable<t> upstream) { return upstream.doonsubscribe(this::showloading).doonterminate(this::hideloading); private void hideloading() { hide.onnext(unit.instance()); private void showloading() { show.onnext(unit.instance());

57 public class OrdersHistoryPresenter extends ReactivePresenter<OrdersHistoryView> { // Binding all behaviors on view [... ] public void fetchorders(searchcriteria criteria) { bind(executionpipeline(criteria), view().displayorders()); private Observable<OrderHistoryType> executionpipeline(searchcriteria criteria) { return source.search(criteria).compose(networkerrorfeedback).compose(loadingwhenprocessing).compose(coordinaterefresh).compose(emptystatewhenmissingdata).compose(errorwhenproblems).map(ordershistoryviewmodelmapper::map);

58 @Test public void shouldtransformview_regardlessemptystream() { // When stream has no data Observable<String> stream = Observable.empty(); // and we add transformation to pipeline stream.compose(loadingwhileprocessing).subscribe( s -> {, throwable -> {, () -> { ); // we should interact with view, anyway verify(view.showloadingaction).call(uimethod()); verify(view.hideloadingaction).call(uimethod());

59 VANTAGENS Cada evento delegado para a UI agora é unit-testable de uma forma muito fácil!!! Presenters apenas orquestram a UI (como prega MVP) Presenter não liga para qual tipo de View está associado Transformers são facilmente reutilizáveis

60 PROBLEMAS ENCONTRADOS (I) 1) Boilerplate para o binding de public void bind(ordershistoryview view) { super.bind(view); subscription().add(loadingwhileprocessing.bindloadingcontent(view)); subscription().add(networkerrorfeedback.bindnetworkingreporter(view)); subscription().add(coordinaterefresh.bindrefreshableview(view)); subscription().add(emptystatewhenmissingdata.bindemptystateview(view)); subscription().add(errorstatewhenproblem.binderrorstateview(view)); Possível solução (WIP) : ViewBinder

61 PROBLEMAS ENCONTRADOS (II) 2) Comportamentos injetados via DI no Presenter; possível confusão ao fazer pull das dependências Possível solução (WIP) : ViewBinder fornecido via DI + configuração definida na apresentação 3) Cooperação entre comportamentos Possível solução (WIP) : Transformers agregadores

62 CONCLUSÕES

63 LIÇÕES APRENDIDAS Escolher um modelo de arquitetura não é uma tarefa trivial Evoluir um modelo para obter vantagens de um paradigma (FRP) é ainda menos trivial Não tenha medo de errar; adote iterações na evolução da arquitetura Esforço se paga no médio prazo

64

65 ubiratansoares.github.io

PROGRAMAÇÃO REATIVA FUNCIONAL COM RXJAVA UBIRATAN SOARES MARÇO / 2016

PROGRAMAÇÃO REATIVA FUNCIONAL COM RXJAVA UBIRATAN SOARES MARÇO / 2016 PROGRAMAÇÃO REATIVA FUNCIONAL COM RXJAVA UBIRATAN SOARES MARÇO / 2016 MOTIVAÇÃO Java8 trouxe uma API de Streams, que permite operações comuns sobre coleções como Map, Filter, Reduce Java9 trará uma API

Leia mais

Quem sou eu? Rafael Toledo. Dev Java / Android. www.rafaeltoledo.net

Quem sou eu? Rafael Toledo. Dev Java / Android. www.rafaeltoledo.net Quem sou eu? Rafael Toledo Dev Java / Android www.rafaeltoledo.net Integração REST Praticamente nenhum app funciona isoladamente Integração com APIs é essencial Eficiência é um requisito, sempre! Material

Leia mais

Programação com Objectos. 2º Teste 2015/2016 1º Semestre

Programação com Objectos. 2º Teste 2015/2016 1º Semestre 1/7 2015/2016 1º Semestre 13 de Janeiro de 2016, 18:30 (120 minutos) 2º Teste Nome: Número: Primeira Parte (3 valores) PERGUNTA RESPOSTA Segunda Parte (7 valores) PERGUNTA 1.1 2.1 1.2 2.2.1 1.3 2.2.2 1.4

Leia mais

TÓTI O QUE? thoughtworks.com/pt/careers/access

TÓTI O QUE? thoughtworks.com/pt/careers/access Mobile Developers @ TÓTI O QUE? thoughtworks.com/pt/careers/access UM POUCO SOBRE NOSSA APP ~50 pessoas ~1,5 milhões de diferentes times usuários ativos / mês ~ 3 anos em evolução Android + ios 20+ países

Leia mais

Módulo II Modelo MVP

Módulo II Modelo MVP Módulo II Modelo MVP Prof. Ismael H F Santos April 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Referências (livros) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 2 1 Referências

Leia mais

Aula Prática Criando Views e Controles

Aula Prática Criando Views e Controles Aula Prática Criando Views e Controles Criando a interface utilizando Swing Paulo Ricardo Lisboa de Almeida 1 Criando uma UI Simples Vamos criar uma view simples no braço utilizando swing Existem opções

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

Análise e Projeto Orientados por Objetos

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

Programação Estruturada e Orientada a Objetos

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

Boas práticas com Orientação a Objetos. Paulo Silveira

Boas práticas com Orientação a Objetos. Paulo Silveira Boas práticas com Orientação a Objetos Paulo Silveira paulo.silveira@caelum.com.br Rapidissímo overview IFs e switches X herança Vantagens e desvantagens do uso de Herança Casos errados do uso de herança

Leia mais

Eclipse MicroProfile for the Busy Developer

Eclipse MicroProfile for the Busy Developer Eclipse MicroProfile for the Busy Developer Víctor Orozco 6 de Dezembro de 2018 @tuxtor 1 Java EE - MicroProfile - Spring Boot - Docker 2 Víctor Orozco 10 anos em Java EE CTO@Nabenik @tuxtor http://vorozco.com

Leia mais

Aplicações que executam, em geral, processos longos em background desprovidos de interface. Usado para executar tarefas em segundo plano

Aplicações que executam, em geral, processos longos em background desprovidos de interface. Usado para executar tarefas em segundo plano Serviços Serviços Aplicações que executam, em geral, processos longos em background desprovidos de interface. Usado para executar tarefas em segundo plano Estas tarefas não possuem um tempo definido de

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

MsC. João Maria MsC. Liviane Melo

MsC. João Maria MsC. Liviane Melo Disciplina: Programação Orientada à Objetos AULA 02 Corpo docente: MsC. Alexandro Vladno Edmilson Campos MsC. Fábio Procópio Esp. Felipe Dantas MsC. João Maria MsC. Liviane Melo 2 Tipo Tamanho Alcance

Leia mais

Retrofit. Criar um novo projeto. Selecionar a API. Retrofit para consumir Web Service Luiz Eduardo Guarino de Vasconcelos

Retrofit. Criar um novo projeto. Selecionar a API. Retrofit para consumir Web Service Luiz Eduardo Guarino de Vasconcelos Retrofit Criar um novo projeto Selecionar a API Empty Activity MainActivity Finish. Adicionar Novas Dependências Menu File > Project Structure Modulo app > Aba Dependencies Clique em adicionar (+) no canto

Leia mais

Threads. Leonardo Gresta Paulino Murta

Threads. Leonardo Gresta Paulino Murta Threads Leonardo Gresta Paulino Murta leomurta@ic.uff.br Aula de hoje Estudaremos a execução em paralelo de programas em Java por meio de Threads Leonardo Murta Threads 2 Por que usar Threads? Threads

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

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS 1. Explique a(s) diferença(s) entre design pattern e framework. 2. Analisar o arquivo de configurações (web.xml) abaixo identificando quais suas

Leia mais

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS Aula 2 Vidal. Ronnison Reges 1 1 Análise e Desenvolvimento de Sistemas - Parangaba Centro Universitário Estácio do Ceará 2018 Vidal. Ronnison Reges (Centro Universitário

Leia mais

Visitor. Um problema a resolver. Temos uma hierarquia de classes, provavelmente um Composite Exemplo: Numa rede elétrica, temos a seguinte hierarquia:

Visitor. Um problema a resolver. Temos uma hierarquia de classes, provavelmente um Composite Exemplo: Numa rede elétrica, temos a seguinte hierarquia: Um problema a resolver Temos uma hierarquia de classes, provavelmente um Composite Exemplo: Numa rede elétrica, temos a seguinte hierarquia: Página 1 de 13 Esta hierarquia está sendo usada num programa

Leia mais

Orientação a Objetos. Fernando Camargo 5 de junho de 2017

Orientação a Objetos. Fernando Camargo 5 de junho de 2017 Orientação a Objetos Fernando Camargo 5 de junho de 2017 ZG Soluções Por que um tema tão básico? Por que um tema tão básico? 1 Vantagens da Qualidade de Código Tempo gasto com código de má qualidade Features

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

Indo Além com Automação e Testes de Apps Android. Eduardo

Indo Além com Automação e Testes de Apps Android. Eduardo Indo Além com Automação e Testes de Apps Android Eduardo Carrara @DuCarrara Você já se sentiu assim em seus projetos? Infelizmente não há bala de prata... Precisamos de segurança, para Iterações Rápidas.

Leia mais

Análise e Projeto Orientados por Objetos

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

Padrões de Testes Automatizados

Padrões de Testes Automatizados Padrões de Testes Automatizados Paulo Cheque 10/02/2009 Verão2009 2 Introdução Testes codificados Exigem boa programação Mesmos problemas de um software Devem receber o mesmo tratamento Exigem manutenção

Leia mais

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

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

nome = 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

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

Desenvolvimento de Aplicativos Android

Desenvolvimento de Aplicativos Android Desenvolvimento de Aplicativos Android Criando uma Interface Simples A partir do diretório res/layout/ abra o activity_main.xml. Este arquivo XML define o layout da sua activity. Ele contém o texto padrão

Leia mais

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

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

Apis Rest Autoescaláveis

Apis Rest Autoescaláveis Padrões de design para Apis Rest Autoescaláveis SEM COMPLICAÇÃO QCONSP 2016 Fernando Ultremare About me Full-stack developer desde 1998 Gerente geral de projetos na Dextra Sistemas Criador do YAWP! Framework

Leia mais

Binding and Casting. Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf.

Binding and Casting. Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. Binding and Casting Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4 Binding Intuitively, binding occours whenever a correspondence is stabilished

Leia mais

Errors and exceptions

Errors and exceptions Errors and exceptions Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4 14-1 Overview Introdução Testes e Testes unitários Noção de Exceção A hierarquia

Leia mais

Engenharia de Software

Engenharia de Software UNIVERSIDADE DE LISBOA INSTITUTO SUPERIOR TÉCNICO Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre Repescagem do 2 o Teste, 1 de Julho de 2016 Nome: Número: Este teste tem um conjunto de 10 perguntas

Leia mais

Análise e Projeto Orientados por Objetos

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

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

Lidando com Java Obsoleto: Do Struts 1.0 ao CDI. Java na Crista da Onda

Lidando com Java Obsoleto: Do Struts 1.0 ao CDI. Java na Crista da Onda Lidando com Java Obsoleto: Do Struts 1.0 ao CDI Java na Crista da Onda Lidando com Java Obsoleto: Do Struts 1.0 ao VRaptor com CDI Java na Crista da Onda David Robert davidrobert@gmail.com linkedin.com/in/davidrobert

Leia mais

Avaliação de Frameworks de Produtividade para aplicações CRUD

Avaliação de Frameworks de Produtividade para aplicações CRUD Superintendência de Informática - SINFO/UFRN Avaliação de Frameworks de Produtividade para aplicações CRUD Leonardo René Campos Analista de TI Agenda 1. Introdução 2. Objetivos 3. Critérios de Avaliação

Leia mais

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27 1. Defina os sequintes termos: (a) (1 Ponto) Polimorfismo Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27 (b) (1 Ponto) Sobrescrita de funções (c) (1 Ponto) Sobrecarga

Leia mais

Linguagem Java - Introdução

Linguagem Java - Introdução Linguagem Java - Introdução Identificadores válidos resultado teste01 _numeroclientes $fortuna Identificadores Identificadores inválidos 101dalmatas 34 #x Palavras reservadas abstract assert*** boolean

Leia mais

Engenharia de Software

Engenharia de Software UNIVERSIDADE DE LISBOA INSTITUTO SUPERIOR TÉCNICO Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre 1 o Teste, 10 de Abril de 2018 Duração: 90 minutos Nome: Número: Este teste tem um conjunto de

Leia mais

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE ATO CONVOCATÓRIO Nº 006/2016 CONTRATO DE GESTÃO IGAM Nº 002/IGAM/2012 09/2017 1 PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE ATO CONVOCATÓRIO

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

Idiomas de Programação

Idiomas de Programação DCC / ICEx / UFMG Idiomas de Programação Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Definição de Idiomas Idiomas são padrões de baixo nível específicos de uma linguagem de programação Cada idioma

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

Interfaces POO. Prof. Marcio Delamaro

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

Programação com Objectos 2º Teste Tipo 1º Semestre (120 minutos)

Programação com Objectos 2º Teste Tipo 1º Semestre (120 minutos) 1/8 Programação com Objectos 2º Teste Tipo 1º Semestre (120 minutos) Nome: Primeira Parte (7 valores) PERGUNTA NOTA 1.1.1 1.1.2 1.1.3 1.2 1.3 1.4 Segunda Parte (3 valores) PERGUNTA RESPOSTA 2.1 2.2 2.3

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

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

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

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

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Threads em Java Paulo Ricardo Lisboa de Almeida 1 Temos várias interfaces e classes que podem facilitar nossa vida Runnable Callable Thread... 2 Para a aula de sistemas operacionais,

Leia mais

Arquitectura de Sistemas de Software

Arquitectura de Sistemas de Software Arquitectura de Sistemas de Software Ademar Aguiar www.fe.up.pt/~aaguiar ademar.aguiar@fe.up.pt Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 1 Frameworks orientadas por objectos Arquitectura

Leia mais

Análise e Projeto. Padrões de Análise, Arquitetura e Projeto

Análise e Projeto. Padrões de Análise, Arquitetura e Projeto Análise e Projeto Padrões de Análise, Arquitetura e Projeto 33 Padrões de Arquitetura Padrões Nome do padrão Problema: quando aplicar o padrão? Descreve o problema e seu contexto. Solução: elementos que

Leia mais

Interfaces e Classes Internas

Interfaces e Classes Internas e Classes Internas 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

Aplicação MVC com Class Library

Aplicação MVC com Class Library Aplicação MVC com Class Library Vamos considerar uma Class Library com o modelo de dados e com acesso à base de dados através do Entity Framework. Uma Class Library nunca funciona sozinha. Vamos usá-la

Leia mais

Algoritmos II prof. Daniel Oliveira

Algoritmos II prof. Daniel Oliveira Algoritmos II prof. Daniel Oliveira Revisar conceitos abordados na disciplina anterior Abordar conceitos vistos com a linguagem C# Variáveis e listas Expressões Estruturas de controle do tipo condicional

Leia mais

Organização do sistema em camadas. Projeto

Organização do sistema em camadas. Projeto Introdução a Programação IF669 http://www.cin.ufpe.br/~if669 Organização do sistema em camadas Projeto Ricardo Massa F. Lima rmfl@cin.ufpe.br Sérgio C. B. Soares scbs@cin.ufpe.br Separação de Preocupações

Leia mais

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

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

Curso Superior de Banco de Dados

Curso Superior de Banco de Dados Curso Superior de Banco de Dados Disciplina: Spring Prof. Emanuel Mineda Carneiro emanuel.mineda@fatec.sp.gov.br São José dos Campos - SP Dependências do Jeito Antigo Injeção de Dependência Inversão de

Leia mais

Criando testes automatizados "like a pro"

Criando testes automatizados like a pro Criando testes automatizados "like a pro" Diego Gonçalves Santos Desenvolvedor @ Obstáculos contra os testes automatizados Obstáculos Cliente não vê valor Não há tempo disponível Desenvolvedores não entendem

Leia mais

Tabelas de Dispersão. Estrutura de Dados e Algoritmos

Tabelas de Dispersão. Estrutura de Dados e Algoritmos Tabelas de Dispersão Tabelas de Dispersão Sumário Definição. Características. Resolução de colisões: dispersão com listas e dispersão aberta. Teste quadrático. Desempenho de tabelas de dispersão. Interface

Leia mais

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades. REST Representational State Transfer É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades. Não é um padrão. Exemplo ASP.NET Web API namespace WebAPIApp.Models

Leia mais

Sabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes.

Sabemos 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 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

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

Firebase. Acesse o site https://firebase.google.com/?hl=pt-br Acesse o menu Go to Console. Acesse com uma conta Google ou crie uma conta.

Firebase. Acesse o site https://firebase.google.com/?hl=pt-br Acesse o menu Go to Console. Acesse com uma conta Google ou crie uma conta. Firebase Acesse o site https://firebase.google.com/?hl=pt-br Acesse o menu Go to Console. Acesse com uma conta Google ou crie uma conta. Adicione um projeto. Crie um projeto Para usar o Firebase num projeto

Leia mais

Francisco Roeder. Orientador: Prof. Adilson Vahldick

Francisco Roeder. Orientador: Prof. Adilson Vahldick Francisco Roeder AGRUPAMENTO E ORDENAÇÃO NAS CONSULTAS EM BANCOS DE DADOS DISTRIBUÍDOS ATRAVÉS DE DRIVER JDBC Orientador: Prof. Adilson Vahldick Roteiro da apresentação Introdução Objetivos Fundamentação

Leia mais

Engenharia de Software

Engenharia de Software UNIVERSIDADE DE LISBOA INSTITUTO SUPERIOR TÉCNICO Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre Repescagem 1 o Teste, 7 de Julho de 2017 Duração: 90 minutos Nome: Número: Este teste tem um conjunto

Leia mais

. Uma instância da classe JTextField gera uma instância da classe ActionEvent quando o objecto está activo e o utilizador pressiona a tecla ENTER.

. Uma instância da classe JTextField gera uma instância da classe ActionEvent quando o objecto está activo e o utilizador pressiona a tecla ENTER. Interfaces Gráficas e Eventos - 18 A classe JTextField. Um campo de texto, permite ao utilizador introduzir uma única linha de texto. Uma instância da classe JTextField gera uma instância da classe ActionEvent

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

Biblioteca Android PagSeguro UOL - Checkout in App Manual de Uso

Biblioteca Android PagSeguro UOL - Checkout in App Manual de Uso Guia de Integração Biblioteca Android PagSeguro UOL - Checkout in App Manual de Uso Histórico de Versões - 0.0.1 : Versão inicial - 13/07/2016 Copyright Todos os direitos reservados. O UOL é uma marca

Leia mais

JavaFX Classe de Controle e Eventos. Prof. Vicente Paulo de Camargo

JavaFX Classe de Controle e Eventos. Prof. Vicente Paulo de Camargo JavaFX Classe de Controle e Eventos Prof. Vicente Paulo de Camargo Labels são componentes que permitem auxiliar na compreensão de uma interface gráfica, principalmente para indicar as identificações de

Leia mais

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

Microservices com

Microservices com Microservices com Python @diegorubin Onde posso ser encontrado diegorubin @diegorubin http://diegorubin.com Como construímos software? Como construímos sistemas? Como construímos software - Padrões de

Leia mais

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc. Sintaxe Geral Tipos de Dados Comentários Comentários: De linha: // comentário 1 // comentário 2 De bloco: /* linha 1 linha 2 linha n */ De documentação: /** linha1 * linha2 */ Programa Exemplo: ExemploComentario.java

Leia mais

MODEL-VIEW-CONTROLER. Prof. Fellipe Aleixo

MODEL-VIEW-CONTROLER. Prof. Fellipe Aleixo MODEL-VIEW-CONTROLER Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) O Que é MVC? Modelo de arquitetura de software Separar dados ou lógica de negócios (Model) da interface do usuário (View) e do fluxo

Leia mais

O JUnit permite a realização de testes de unidades, conhecidos como "caixa branca", facilitando assim a correção de métodos e objetos.

O JUnit permite a realização de testes de unidades, conhecidos como caixa branca, facilitando assim a correção de métodos e objetos. JUnit O JUnit é um framework open-source, criado por Erich Gamma e Kent Beck, com suporte à criação de testes automatizados na linguagem de programação Java. Esse framework facilita a criação de código

Leia mais

Engenharia de Software

Engenharia de Software UNIVERSIDADE DE LISBOA INSTITUTO SUPERIOR TÉCNICO Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre Repescagem 1 o Teste, 7 de Julho de 2018 Duração: 90 minutos Nome: Número: Este teste tem um conjunto

Leia mais

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

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

Prof. Msc. Vladimir Camelo

Prof. Msc. Vladimir Camelo APLICATIVOS DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS (ALPOO) PADRÃO MVC (Model-View-Controller) Prof. Msc. Vladimir Camelo O padrão arquitetural MVC (Model-View-Controller) foi criado no contexto

Leia mais

Arquitetura em Camadas

Arquitetura em Camadas Arquitetura em Camadas 1 Introdução Em aplicações OO de médio e grande porte, diversos aspectos devem ser considerados: Apresentação Lógica da aplicação Lógica do negócio Persistência de Objetos Camada

Leia mais

Curso de Android - 2 Novas Activities. SECAP Prof. Rone Ilídio - UFSJ

Curso de Android - 2 Novas Activities. SECAP Prof. Rone Ilídio - UFSJ Curso de Android - 2 Novas Activities SECAP Prof. Rone Ilídio - UFSJ Inserindo a segunda activity Inserindo a segunda activity Criaremos uma aplicação com duas telas onde ao clicar o botão de uma chama-se

Leia mais

Nome: Número: Segunda Parte (3 valores) Primeira Parte (7 valores)

Nome: Número: Segunda Parte (3 valores) Primeira Parte (7 valores) 2º Teste 2013/2014 1º Semestre 201401140900 2º Teste 2013/2014 1º Semestre 14 de Janeiro de 2014, 09:00 (120 minutos) Nome: Número: 1/8 Primeira Parte (7 valores) PERGUNTA NOTA 1.1.1 1.1.2 1.1.3 1.2.1

Leia mais

Padrões de Projeto de Software

Padrões de Projeto de Software Padrões de Projeto de Software Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático Padrões Básicos Information Expert Creator High Cohesion Low Coupling Controller Padrões Avançados

Leia mais

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

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

PROGRAMAÇÃO JAVA. Parte 3

PROGRAMAÇÃO JAVA. Parte 3 PROGRAMAÇÃO JAVA Parte 3 O PRIMEIRO PROGRAMA O Java executa uma instrução a seguir a outra, pela ordem em que estão escritas. Essa sequência poderá ser contrariada de forma especial: Alternativas: Ciclos

Leia mais

Design Patterns (Factory Method, Prototype, Singleton)

Design Patterns (Factory Method, Prototype, Singleton) DesignPatterns (FactoryMethod,Prototype,Singleton) JoãoAntónioPaz LuísMiguelClaro AlbertoManuelGomes N.º12812 N.º12817 N.º12818 FACTORYMETHOD Padrãoquedefineumainterfaceparacriaçãodeobjectos,masdeixaassubclassesdecidirque

Leia mais

Classes e Objetos POO

Classes e Objetos POO Classes e Objetos POO Prof. Marcio Delamaro 1/40 POO (wikipedia) Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which are data structures that contain data,

Leia mais

DHCPv6 usando o exemplo de configuração da característica da delegação do prefixo

DHCPv6 usando o exemplo de configuração da característica da delegação do prefixo DHCPv6 usando o exemplo de configuração da característica da delegação do prefixo Índice Introdução Pré-requisitos Requisitos Componentes Utilizados Configurar Diagrama de Rede Configurações Verificar

Leia mais

DESIGN PATTERNS. Como evitar problemas no futuro

DESIGN PATTERNS. Como evitar problemas no futuro I DESIGN PATTERNS Como evitar problemas no futuro 1 Zalba Monteiro Desenvolvedora Full Stack Desenvolvedora de software há 7 anos, atualmente trabalhando na CWI Software. Amante de tecnologias que envolvem

Leia mais

Ciclo de vida; Funcionamento; Requisições e Respostas.

Ciclo de vida; Funcionamento; Requisições e Respostas. Disciplina: Programação Web AULA 05 Ciclo de vida; Funcionamento; Requisições e Respostas. Corpo docente: MsC. Alexandro Vladno Edmilson Campos MsC. Fábio Procópio Esp. Felipe Dantas MsC. João Maria MsC.

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Aula 1 REST em Java JAX-RS (Jersey) Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 1 REST : REPRESENTATIONAL STATE TRANSFER Padrão arquitetural para

Leia mais

GT-FENDE. Carlos Raniery P. dos Santos Universidade Federal de Santa Maria

GT-FENDE. Carlos Raniery P. dos Santos Universidade Federal de Santa Maria Carlos Raniery P. dos Santos Universidade Federal de Santa Maria Introdução Soluções baseadas em software possibilitam uma maior flexibilidade da rede, permitindo que novas funções e serviços sejam rapidamente

Leia mais

Engenharia de Software

Engenharia de Software UNIVERSIDADE DE LISBOA INSTITUTO SUPERIOR TÉCNICO Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre 2 o Teste, 17 de Junho de 2017 Duração: 90 minutos Nome: Número: Este teste tem um conjunto de

Leia mais