Programação Modular em C++

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

Download "Programação Modular em C++"

Transcrição

1 Programação Modular em C++ Princípios de Projeto Orientado por Objetos Roberto da Silva Bigonha Todos os direitos reservados Proibida a cópia sem autorização do S. Bigonha Princípios de Projeto OO C++ 1

2 Princípio de Projeto #1 Baixa Conectividade Todo módulo deve comunicar-se com um número mínimo de outros módulos 2

3 Modelo das 100 Lâmpadas As lâmpadas podem ser conectadas a qualquer outra Toda lâmpada acesa tem a probabilidade de 50% de desligar-se no próximo segundo Toda lâmpada apagada e que estiver conectada diretamente a pelo menos uma lâmpada acesa tem a probabilidade de 50% de acender-se no próximo segundo Toda lâmpada apagada assim permanece enquanto estiver conectada diretamente a somente lâmpadas apagadas Inicialmente todas as lâmpadas estão acesas 3

4 Modelo das 100 Lâmpadas... Considere três casos: 100 lâmpadas desconectadas 100 lâmpadas completamente conectadas 100 lâmpadas conectadas em grupos de 10 Suponhamos que: cada lâmpada representa um módulo Apagar ou acender uma lâmpada equivale ao ato de modificar a interface de um módulo 4

5 100 Lâmpadas Desconectadas Em quantos segundos 100 lâmpadas acessas atingem estabilidade? Como não há lâmpadas conectadas, a metade delas apaga-se no próximo segundo Como as 50 lâmpadas não estão conectadas, elas nunca se re-acenderão No próximo segundo, mais 25 lâmpadas apagamse Em 7 segundos, todas as lâmpadas estarão apagadas ( 50, 25, 12, 6, 3, 2 e 1) Equilíbrio atingido em 7 segundos 5

6 Lâmpadas Conectadas em Grupos de 10 Particione o conjunto de 100 lâmpadas em 10 grupos de 10, todas conectadas em cada grupo Em quantos segundos o sistema atinge estabilidade? Equilíbrio em 20 minutos 6

7 Todas as 100 Lâmpadas Conectadas 100 lâmpadas completamente conectadas Toda lâmpada tem 99 conexões Em quanto tempo todas se apagam? Equilíbrio em 10^22 anos 7

8 Conectividade X Complexidade HIPÓTESES: Conectividade tem relação direta com complexidade Aumento do grau de conectividade implica em aumento do custo de manutenção 8

9 Princípio de Projeto #2 Interface Pequena Banda de comunicação entre módulos deve ser mínima 9

10 Princípio da Interface Pequena Se dois módulos não podem evitar de se comunicarem, então a comunicação entre eles deve ser a mínima possível. O controle do volume e tipo de comunicação entre módulos é fundamental para obter sistemas modulares Contra-Exemplos: grande área de variáveis globais A melhor forma de comunicação entre módulos deve ser via parâmetros por valor 10

11 Princípio de Projeto #3 Interface Explícita Comunicação entre módulos deve ser óbvia pela simples inspeção dos módulos 11

12 Princípio da Interface Explícita Se dois módulos A e B se comunicam, então este fato deve ser evidente pela simples inspeção do texto de A ou B Princípio relacionado com o seguinte critério: Inteligibilidade: Como entender comportamento de um módulo que é influenciado por outro módulo de forma indireta? 12

13 Princípio de Projeto #4 Encapsulação Minimize a acessibilidade externa de classes e métodos 13

14 O Papel da Encapsulação Encapsulação é um recurso para definir os serviços que uma classe torna disponíveis para seus clientes Há dois tipos de clientes para cada classe (módulo): cliente externo cliente descendente Interface com cliente externo: public Interface com cliente descendente: protected (normalmente acoplamento por conteúdo) Proteção de dados: private 14

15 Encapsulação Encapsulação serve para separar a interface contratual de sua implementação. Encapsulação é um mecanismo usado para esconder os dados, estruturas internas e detalhes de implementação de um objeto, forçando que toda interação seja via operações da interface pública. Classes nunca devem expor seus detalhes de implementação. 15

16 Dados Sempre Privados Use sempre membros privados Se inevitável, use acessores e modificadores Por exemplo, public: double peso; deve, no mínimo, ser substituído por private: double peso; public: double getpeso( ){return peso;} void setpeso(double peso) { this->peso = peso; } 16

17 Princípio de Projeto #5 Abertura-Fechamento Entidades de software devem ser implementadas de forma a nunca terem que ser modificadas, mas apenas estendidas (Bertrand Meyer) 17

18 Abertura e Fechamento Módulo fechado é um compilado e armazenado na biblioteca de módulos Módulo deve ser fechado somente quando tiver uma interface bem definida e estável Mas, frequentemente, fecha-se um módulo porque não se pode esperar o levantamento de toda informação sobre o uso do módulo Módulo é fechado para modificações, quando julga-se que se atingiu estabilidade O módulo é adaptado somente via extensões, quando for necessário 18

19 Bom módulo deve ser: Abertura e Fechamento fechado para modificações, porém deve estar sempre aberto para incorporar novas extensões Extensões típicas são: inclusão de novos campos. inclusão de novas funções ou serviços 19

20 O Princípio Aberto-Fechado Módulos que conformam-se com OCP são: abertos para extensão: fechados para modificação 20

21 Princípio de Projeto #6 Substituição de Liskov (LSP) Funções que usam referências para objetos de uma classe devem ser capazes de referenciar objetos das subclasses dessa classe sem saberem (Barbara Liskov) 21

22 Contrato de Classe Contrato de uma classe é a coleção dos métodos e campos por ela exportados Pré-condições e pós-condições dos elementos exportados fazem parte do contrato Campos e métodos privados não fazem parte do contrato Contrato é o que o projetista da classe promete que ela fará. 22

23 Condições de Execução de um Método Pré-Condição: Condição a ser satisfeita pelos valores dos parâmetros do método e o estado do objeto no momento de entrada do método Pós-Condição: Condição a ser satisfeita pelo estado objeto produzido e pelo valor retornado pelo método 23

24 Cumprimento do Contrato Pré-Condição define as condições sob as quais a chamada a uma rotina é legítima. Pós-Condição define as condições que a rotina deve garantir no seu retorno. O retorno normal de um método significa cumprimento do contrato. Falhas no cumprimento do contrato devem sempre causar lançamento de exceções. 24

25 Programação por Contrato O relacionamento entre uma classe e seus clientes é uma relação de direitos e obrigações É uma relação vinculada a idéia de contrato Deve-se definir cláusulas de pré-condição e de póscondição para todo método r Regra Básica do Contrato: Se o usuário se comprometer a chamar o método r com sua pré-condição satisfeita, então r garante devolver um estado final com sua pós-condição satisfeita, ou então informa explicitamente seu insucesso. 25

26 Conceito de Subcontratação A definição de subclasse equivale a estender o contrato da superclasse O contrato herdado pode ser redefinido desde que não viole o contrato da superclasse Na redefinição da implementação de um contrato pode-se enfraquecer as pré-condições e fortalecer as pós-condições de métodos Condição mais fraca é menos restrita Condição mais forte é mais restrita 26

27 Fortalecimento de Pré-Condições Exemplo: substituir caixa-humano por caixaeletrônico Caixa-Humano: autoriza retiradas até R$50,00 sem verificar existência de fundos Caixa-Eletrônico: não as autoriza Há violação do contrato, porque fortaleceu-se indevidamente a pré-condição do método Fortalecimento da pré-condição tem impacto nos módulos cliente 27

28 Enfraquecimento de Pós-Condições Ex: método retorna um inteiro no intervalo [10,20] O valor retornado pode ser usado para indexar arranjos cujo tamanho seja menor ou igual a 20 Problema: método redefinido retorna um valor entre 1 e 100, violando contrato Enfraquecimento da pós-condição tem impacto nos módulos clientes 28

29 Sumário do Princípio de Liskov Para satisfazer o princípio de Liskov (LSP), toda subclasse deve ter o comportamento que os clientes esperam de sua respectiva superclasse Em termos de contrato, uma classe derivada é substituta de uma classe base se: Pré-condições de seus métodos redefinidos nunca são mais fortes que as dos respectivos métodos da classe base Pós-condições de seus métodos redefinidos nunca são mais fracas que as dos respectivos métodos da classe base 29

30 Princípio de Projeto #7 Preferência à Composição Composição é preferível a Herança 30

31 Composição Método de reúso no qual novas funcões são obtidas por composição com outros objetos As novas funções são obtidas por delegação de funções aos objetos da composição Composição dá-se por agregação ou por conhecimento: 1. Agregação quando um objeto possui responsabilidades sobre outros e todos possuem mesmo tempo de vida 2. Conhecimento quando um objeto faz referências a outros objetos independentes 31

32 Implementação da Composição Composição pode ser implementada por valor por referência Exemplo de ambas as formas: class A {B x; C *y; }; Objetos que formam a composição são chamados de objetos contidos A classe que os contém chama-se compositora 32

33 Vantagens da Composição Objetos contidos são acessados pela classe compositora somente através de suas interfaces É um reúso caixa-preta: detalhes internos dos objetos contidos não são visíveis Boa encapsulação Menos dependência em relação à implementação dos objetos contidos A composição é dinamicamente definida, porque as referências aos objetos contidos são obtidas durante a execução 33

34 Desvantagens da Composição Perda de reusabilidade 34

35 Herança Método de reúso no qual novas classes são obtidas pela extensão de classes existentes A classe generalizada (superclasse) define explicitamente os métodos e atributos comuns A classe especializada (subclasse) estende a implementação com atributos e métodos adicionais Herança pode ser de classe ou de interface 35

36 Vantagens de Herança Fácil gerar novas implementações, porque reúso é facilitado Fácil modificar ou estender as implementações que são reusadas 36

37 Desvantagens de Herança Herança possibilita violar encapsulação, porque detalhes (protected) da superclasse podem estar expostos na subclasse Herança permite reúso de caixa-branca, porque detalhes da superclasse podem ser visíveis nas subclasses Subclasses podem ter que ser mudadas quando altera-se sua superclasse 37

38 Relação Um Tipo Especial de Classe Médico: operações virtuais Doença consulta(paciente&) Remédio receita(doença) Classe Cardiologista : operações Doença consulta(paciente&) Remédio receita(doença) Resultado opera(paciente&) Na relação é um tipo especial de, Cardiologista é de fato uma especialização de Médico POLIMORFISMO: Um cardiologista é um tipo especial de Médico, que pode ser usado onde um médico for desejado. 38

39 Relação Pode Exercer o Papel de Classe Real representada por um float e oferece as seguintes operações virtuais: soma, sub mult, div Classe Complexo representada por dois floats e oferece as seguintes operações: soma, sub mult, div Na relação pode exercer o papel de, Complexo é visto como uma especialização de Real, não é de fato POLIMORFISMO: Um complexo pode ser usado onde um real for desejado, por pode exercer o papel de Real, mas não é Real 39

40 Relação Pode Exercer o Papel de Classe Ponto representada por um par ordenado e oferece as seguintes operações vituais: hide show move Classe Segmento representada por dois pares ordenados e oferece as seguintes operações: hide show move length Na relaçao pode exercer o papel de, Segmento é visto como uma especialização de Ponto POLIMORFISMO: Um segmento pode ser usado onde um ponto for desejado, mas não é Ponto 40

41 Reúso de Implementação (move) class Ponto { float x1, y1 ; public: virtual void adjust(float x,float y){...}; Ponto(float a,float b){x1 = a; y1 = b;}; virtual void hide( ) {... }; virtual void show( ) {... } virtual void move(float x, y ) { hide( ); adjust(x,y); show( ); } } 41

42 Reúso de Implementação (move) class Segmento: public Ponto { float x2, y2; public: void adjust(float x, float y) {... }; Segmento(float a,float b, float c,float d):ponto(a,b) { x2 = c; y2 = d; } void hide( ) {... }; void show ( ) {... }; int length( ) {... }; } 42

43 Uso de Composição class Segmento { Ponto p1, p2 public: void adjust(float x, float y) {... }; Segmento(float a,float b, float c,float d):p1(a,b),p2(c,d){} void hide(){p1.hide();...p2.hide();... }; void show () {... }; int length() {... }; void move(float x, y ) { hide( ); adjust(x,y); show( ); } } 43

44 Herança X Composição Herança para criação de subtipos: Subclasse corresponde a subconjunto Exemplo: Cardiologista é subconjunto de Médico Herança para reúso de implementação : Subclasse pode não corresponder a subconjunto. Exemplo: Complexo não é subconjunto de Real MELHOR AINDA: Use Composição em vez de herança nestes casos 44

45 Sumário do Princípio Composição e herança são importantes métodos de reúso Use herança com cuidado, sem abusos Projeto pode ser simplificado com uso de composição Composição e herança devem cooperar-se O princípio fundamental é: Prefira composição à herança 45

46 Princípio de Projeto #8 Programação Para Interface Programação deve basear-se em interface e nunca na implementação de classe 46

47 Interfaces Uma interface é o conjunto de métodos que um objeto sabe que pode chamar de outro A interface é um subconjunto dos métodos que uma classe implementa Um objeto é conhecido via sua interface Interface expressa a propriedade de ser um de Um objeto pode então ter muitas interfaces Um tipo é uma interface específica de um objeto Diferentes objetos podem ter o mesmo tipo Um mesmo objeto pode ter diferentes tipos 47

48 Herança X Subtipagem Herança de classe: implementação de um objeto é definida em termos da implementação de outro Subtipagem: descrição de quando um objeto pode ser usado no lugar de um outro Herança em C++ significa herança de classe e herança de interface Herança de interface de C++ é obtida herdando-se de classe abstrata pura Java tem construções distintas para cada caso A construção de interface de Java facilita expressar e implementar projetos focados na interface de S. Bigonha Princípios de Projeto OO C++ 48

49 Benefícios de Interfaces Clientes não precisam preocupar-se com a classe específica do objeto que se está usando Um objeto pode ser dinamicamente substituído por outro de diferente classe Conexões entre objetos não precisam fixar as classes dos objetos, aumentando a flexibilidade Confere menor grau de acoplamento de classes Aumenta grau de reúso de classes Facilita composição, porque objetos contidos podem ser de quaisquer classes que implementem a S. Bigonha Princípios de Projeto OO C++ 49

50 Exemplo 1: Interface class Maneuverable { public: virtual void left( ) = 0 ; virtual void right( ) = 0 ; virtual void forward( ) = 0 ; virtual void reverse( ) = 0 ; virtual void climb( ) = 0 ; virtual void dive( ) = 0 ; virtual void setspeed(double speed) = 0 ; virtual double getspeed( ) = 0 ; S. Bigonha Princípios de Projeto OO C++ 50

51 Exemplo 1: Interface class Car: public Maneurable{ código }; class Boat: public Maneurable{ }; código class Submarine: public Maneurable{ }; S. Bigonha Princípios de Projeto OO C++ 51

52 Exemplo 1 : Interface Um método travel de uma outra classe pode dirigir um veículo do tipo Maneurable sem se preocupar com sua real classe (Car, Boat, Submarine) void travel(maneurable& vehicle) { vehicle.setspeed(35.0); vehicle.forward(); vehicle.left(); vehicle.climb(); S. Bigonha Princípios de Projeto OO C++ 52

53 Sumário do Princípio Todo objeto deve ter seu tipo definido por uma Interface Os usuários de um objeto somente devem conhecêlo por sua interface O princípio fundamental: O uso de um objeto deve sempre independer de sua S. Bigonha Princípios de Projeto OO C++ 53

54 Princípio de Projeto #9 Segregação de Interfaces Interfaces mais específicas são melhores que interfaces de propósito S. Bigonha Princípios de Projeto OO C++ 54

55 Exemplo de Interface Poluída Considere um sistema de segurança para portas Portas podem ser trancadas ou não Portas sabem quando estão abertas ou não class Porta { public: virtual void fecha( ){ } virtual void abre( ) { } virtual bool portaaberta( ) { } } S. Bigonha Princípios de Projeto OO C++ 55

56 Porta de Segurança Certas portas, e.g., as de Cofre, somente podem ser abertas em determinados horários class PortaDeCofre: public Porta { public: }; void definehorario ( ){ } bool podeabrir( ) { } As Portas são usadas em todo o sistema class Predio { }; Porta porta[100]; ; porta[i] = new P S. Bigonha Princípios de Projeto OO C++ 56

57 Melhoria da Segurança do Cofre Deseja-se então acrescentar ao sistema a capacidade de as portas de cofre dispararem alarme se ficarem abertas além de um certo tempo Suponha que já exista implementada a classe Temporizador, que não se pode alterar Deseja-se usar o temporarizador com o mínino de alteração no S. Bigonha Princípios de Projeto OO C++ 57

58 O Temporizador class Temporizador { }; public:void registra(int t,monitorado* c){ }... C->disparaAlarme();... class Monitorado { }; public: virtual disparaalarme( ){... } Método registra toma nota do objeto monitorado c, o qual será automaticamente notificado, via chamada ao seu método disparaalarme, após decorrido o tempo t de S. Bigonha Princípios de Projeto OO C++ 58

59 Alarme Temporizado nas Portas Somente objetos do tipo Monitorado podem ser passados ao método registra Portanto objetos Porta não podem ser passados ao método registra Uma solução, para contornar esta dificuldade, é tornar a classe Porta uma extensão da classe Monitorado Em consequência, Porta agora passa a ter o método disparaalarme em sua S. Bigonha Princípios de Projeto OO C++ 59

60 Hierarquia dos Monitorados Monitorado Porta S. Bigonha Princípios de Projeto OO C++ 60

61 A Poluição Uma classe é obrigada a ter em sua interface um ou mais métodos somente porque uma de suas subclasses precisa deste comportamento Considerando que estes métodos nada têm a ver com a classe, pode-se considerar sua presença como um poluente Esta é a síndrome da Interface S. Bigonha Princípios de Projeto OO C++ 61

62 Solução com Herança Múltipla class Porta { public: virtual void fecha( ){ } virtual void abre( ) { } virtual bool portaaberta( ) { } }; class PortaDeCofre: public Porta, public Monitorado { public: void definehorario ( ){ } public bool podeabrir( ) { } public void disparaalarme( ) { } S. Bigonha Princípios de Projeto OO C++ 62

63 Solução com Composição... class Porta { public: virtual void fecha( ){ } virtual void abre( ) { } virtual bool portaaberta( ) { } }; class PortaDeCofre: public Porta { public: void definehorario ( ){ } bool podeabrir( ) { } void disparaalarme( ) { } S. Bigonha Princípios de Projeto OO C++ 63

64 Solução com Composição... class MeuMonitorado: public Monitorado { PortaDeCofre* p; public: MeuMonitorado(PortaDeCofre* p){this->p=p;} void disparaalarme(){p->disparaalarme( );} };... int tempo = 100; Temporizador t = Temporizador( ); PortaDeCofre* p = new PortaDeCofre( ); MeuMonitorado* m = new MeuMonitorado(p); t.registra(tempo, S. Bigonha Princípios de Projeto OO C++ 64

65 Princípio de Projeto #10 Única Responsabilidade: Nunca deve haver mais de um motivo para uma classe ser S. Bigonha Princípios de Projeto OO C++ 65

66 Responsabilidades de Classe Cada responsabilidade constitui-se uma dimensão de mudanças Se uma classe tem mais de uma responsabilidade, então haverá mais de uma razão para alterá-la Quanto mais responsabilidades houver numa classe, mais frágil torna-se o S. Bigonha Princípios de Projeto OO C++ 66

67 Exemplo 1: Violação do Princípio Considere o projeto da classe Retangulo: Aplicação Geométrica Retangulo desenha () double area() Aplicação Gráfica GUI Implicações: Aplicações geométricas têm que ter o GUI disponível, apesar de não precisar dele Mudanças nas aplicações gráficas têm impacto nas aplicações geométricas (retestes, recompilação, S. Bigonha Princípios de Projeto OO C++ 67

68 Solução do Exemplo 1 Criar uma classe para cada responsabilidade: Aplicação Geometrica Aplicação Gráfica Retângulo Geométrico double area() Retângulo desenha () GUI Agora, mudanças feitas na apresentação gráfica do Retangulo não afetam as aplicações S. Bigonha Princípios de Projeto OO C++ 68

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:

Leia mais

Padrão Básico de Projeto: Herança versus Composição

Padrão Básico de Projeto: Herança versus Composição Padrão Básico de Projeto: Herança versus Composição Composição e Herança Composição e herança são dois mecanismos para reutilizar funcionalidade Alguns anos atrás (e na cabeça de alguns programadores ainda!),

Leia mais

Herança. Alberto Costa Neto DComp - UFS

Herança. Alberto Costa Neto DComp - UFS Herança Alberto Costa Neto DComp - UFS 1 Motivação Vimos como se faz encapsulamento e a importância de fazê-lo... Contudo, também é possível fazer encapsulamento em algumas linguagens não OO O que mais

Leia mais

Padrão Básico de Projeto: Interfaces e Polimorfismo

Padrão Básico de Projeto: Interfaces e Polimorfismo Padrão Básico de Projeto: Interfaces e Polimorfismo Herança de implementação versus herança de interface Há uma diferença grande entre uma classe e seu tipo A classe define ambos um tipo e uma implementação

Leia mais

UML Aspectos de projetos em Diagramas de classes

UML Aspectos de projetos em Diagramas de classes UML Aspectos de projetos em Diagramas de classes Após ser definido o contexto da aplicação a ser gerada. Devemos pensar em detalhar o Diagrama de Classes com informações visando uma implementação Orientada

Leia mais

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos Programação Estruturada e Orientada a Objetos Fundamentos Orientação a Objetos 2013 O que veremos hoje? Introdução aos fundamentos de Orientação a Objetos Transparências baseadas no material do Prof. Jailton

Leia mais

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais Curso de Java Orientação a objetos e a Linguagem JAVA Roteiro A linguagem Java e a máquina virtual Objetos e Classes Encapsulamento, Herança e Polimorfismo Primeiro Exemplo A Linguagem JAVA Principais

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar

Leia mais

2 Engenharia de Software

2 Engenharia de Software 20 2 Engenharia de Software 2.1 Design de Sistemas Orientados a Objetos Os Sistemas Orientados a Objetos não são mais novidade hoje em dia já estando há muitos anos no mercado. A orientação a objetos permite

Leia mais

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

Leia mais

Programação Orientada a Objetos. Encapsulamento

Programação Orientada a Objetos. Encapsulamento Programação Orientada a Objetos Encapsulamento de Dados Ocultação de dados Garante a transparência de utilização dos componentes do software, facilitando: Entendimento Reuso Manutenção Minimiza as interdependências

Leia mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor

Leia mais

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

Programação Orientada a Objetos em Java. Herança Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Herança Professor: César Melo Slides baseados em materiais preparados

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 Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato

Leia mais

Programação Orientada a Objetos Herança Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

Programação Orientada a Objetos Herança Técnico em Informática. Prof. Marcos André Pisching, M.Sc. Herança Técnico em Informática, M.Sc. Herança 2 Herança Reutilização de código Exemplo Banco: Um banco oferece diversos serviços que podem ser contratados individualmente pelos clientes. Quando um serviço

Leia mais

Desenho de Software. Desenho de Software 1

Desenho de Software. Desenho de Software 1 Desenho de Software Desenho de Software 1 Sumário Caracterização Conceitos fundamentais Desenho funcional e desenho OO Qualidades Desenho de Software 2 Bibliografia Pfleeger, Capítulo 6 Design the Modules

Leia mais

Reuso com Herança a e Composiçã

Reuso com Herança a e Composiçã Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:

Leia mais

3.1 Definições Uma classe é a descrição de um tipo de objeto.

3.1 Definições Uma classe é a descrição de um tipo de objeto. Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Classes Autoria:Aristófanes Corrêa Silva Adaptação:

Leia mais

Herança. Algoritmos e Programação II. Aula 5 Herança

Herança. Algoritmos e Programação II. Aula 5 Herança Algoritmos e Programação II Aula 5 Herança *Adaptado do material do Prof. Júlio Machado Herança Uma característica importante da programação orientada a objetos é permitir a criação de novas classes com

Leia mais

Polimorfismo. Prof. Leonardo Barreto Campos 1

Polimorfismo. Prof. Leonardo Barreto Campos 1 Polimorfismo Prof. Leonardo Barreto Campos 1 Sumário Introdução; Polimorfismo; Polimorfismo Java; Métodos Abstratos Java Classes Abstratas Java Exercício - Java Polimorfismo C++ Classe Abstrata C++; Funções

Leia mais

Programação Orientada a Objetos em Java

Programação Orientada a Objetos em Java Programação Orientada a Objetos em Java Rone Ilídio da Silva Universidade Federal de São João del-rei Campus Alto Paraopeba 1:14 1 Objetivo Apresentar os principais conceitos de Programção Orientada a

Leia mais

Tópicos em Engenharia de Computação

Tópicos em Engenharia de Computação Tópicos em Engenharia de Computação Introdução / Revisão UML e POO (JAVA) Prof. Ivan Prof. Zagari UML Linguagem Unificada. Não é metodologia, processo ou método. Versão atual 2.0 3 categorias de Diagramas

Leia mais

2 Diagrama de Caso de Uso

2 Diagrama de Caso de Uso Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa

Leia mais

Decorator Pattern. SISMO - Sistemas e Mobilidade http://www.sismo.deinf.ufma.br. Junho de 2008. Departamento de Informática / UFMA

Decorator Pattern. SISMO - Sistemas e Mobilidade http://www.sismo.deinf.ufma.br. Junho de 2008. Departamento de Informática / UFMA Decorator Pattern SISMO - Sistemas e Mobilidade http://www.sismo.deinf.ufma.br Departamento de Informática / UFMA Junho de 2008 Revisando os conceitos Herança é poderosa mas não é flexível Comportamento

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Programação Orientada a Objetos Classes Abstratas Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

Programação Orientada a Objetos Classes Abstratas Técnico em Informática. Prof. Marcos André Pisching, M.Sc. Classes Abstratas Técnico em Informática, M.Sc. Classes Abstratas 2 Classes Abstratas Abstração Devemos considerar as qualidades e comportamentos independentes dos objetos a que pertencem, isolamos seus

Leia mais

Orientação a Objetos com Java

Orientação a Objetos com Java Orientação a Objetos com Java Julio Cesar Nardi julionardi@yahoo.com.br 2011/2 Apresentação 3: Orientação Objetos: Conceitos Básicos Objetivos: Compreender os Conceitos Básicos da Orientação a Objetos;

Leia mais

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes. Desenvolvimento OO com Java 7 RTTI e Interfaces Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do

Leia mais

Programação Orientada a Objetos (DPADF 0063)

Programação Orientada a Objetos (DPADF 0063) Programação Orientada a Objetos (DPADF 0063) Aula 6 Polimorfismo Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof.

Leia mais

UML: Diagrama de Casos de Uso, Diagrama de Classes

UML: Diagrama de Casos de Uso, Diagrama de Classes UML: Diagrama de Casos de Uso, Diagrama de Classes Diagrama de Casos de Uso O modelo de casos de uso visa responder a pergunta: Que usos (funcionalidades) o sistema terá? ou Para que aplicações o sistema

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/52 Herança revisão A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse pode

Leia mais

Subtipos e Subclasses

Subtipos e Subclasses Subtipos e Subclasses Aula 15 do curso 6.170 15 de outubro de 2001 Sumário 1Subtipos 32 2 Exemplo: Bicicletas 33 3 Exemplo: Quadrado e retângulo 37 4 Princípio de substituição 38 5 Subclasses e subtipos

Leia mais

Prototype, um Design Patterns de Criação

Prototype, um Design Patterns de Criação Prototype, um Design Patterns de Criação José Anízio Pantoja Maia Este artigo tem como finalidade compreender o funcionamento do padrão de projeto prototype, serão abordados os participantes que compõe

Leia mais

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 1. Conceitos de Orientação a Objetos Introdução O paradigma da POO Classes

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 5. Tratamento de Exceções Introdução e conceitos Capturando exceção usando

Leia mais

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

Profº. Enrique Pimentel Leite de Oliveira

Profº. Enrique Pimentel Leite de Oliveira Profº. Enrique Pimentel Leite de Oliveira O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam

Leia mais

Resolução da lista de exercícios de casos de uso

Resolução da lista de exercícios de casos de uso Resolução da lista de exercícios de casos de uso 1. Explique quando são criados e utilizados os diagramas de casos de uso no processo de desenvolvimento incremental e iterativo. Na fase de concepção se

Leia mais

Modelagem de Casos de Uso (Parte 1)

Modelagem de Casos de Uso (Parte 1) Modelagem de Casos de Uso (Parte 1) Roteiro Introdução Descrição: Sistema de Ponto de Vendas Casos de Usos Atores Fluxo de Eventos Cenários Formato de Documentação de Casos de Uso Diagramas de Casos de

Leia mais

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

Leia mais

Padrões de projeto 1

Padrões de projeto 1 Padrões de projeto 1 Design Orientado Objeto Encapsulamento Herança Polimorfismo Design Patterns 2 Responsabilidades Booch e Rumbaugh Responsabilidade é um contrato ou obrigação de um tipo ou classe. Dois

Leia mais

Programação Concorrente em java - Exercícios Práticos Abril 2004

Programação Concorrente em java - Exercícios Práticos Abril 2004 Programação Concorrente em java - Exercícios Práticos Abril 2004 1. Introdução As threads correspondem a linhas de controlo independentes no âmbito de um mesmo processo. No caso da linguagem JAVA, é precisamente

Leia mais

Organizando Classes em Pacotes. Profa. Thienne Johnson EACH/USP

Organizando Classes em Pacotes. Profa. Thienne Johnson EACH/USP Organizando Classes em Pacotes Profa. Thienne Johnson EACH/USP Criando e usando pacotes Nomeando um pacote Usando membros de pacotes Gerenciando arquivos Exercícios Usando pacotes no Eclipse Tutorial da

Leia mais

Técnicas de Programação II

Técnicas de Programação II Técnicas de Programação II Aula 06 Orientação a Objetos e Classes Edirlei Soares de Lima Orientação a Objetos O ser humano se relaciona com o mundo através do conceito de objetos.

Leia mais

ADMINISTRAÇÃO I. Família Pai, mãe, filhos. Criar condições para a perpetuação da espécie

ADMINISTRAÇÃO I. Família Pai, mãe, filhos. Criar condições para a perpetuação da espécie 1 INTRODUÇÃO 1.1 ORGANIZAÇÃO E PROCESSOS A administração está diretamente ligada às organizações e aos processos existentes nas mesmas. Portanto, para a melhor compreensão da Administração e sua importância

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

ANÁLISE E PROJETO ORIENTADO A OBJETOS. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

ANÁLISE E PROJETO ORIENTADO A OBJETOS. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com ANÁLISE E PROJETO ORIENTADO A OBJETOS Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com Análise Descrição do problema a ser implementado Descrição dos objetos e classes que fazem parte do problema, Descrição

Leia mais

POO Programação Orientada a Objetos. Classes em Java

POO Programação Orientada a Objetos. Classes em Java + POO Programação Orientada a Objetos Classes em Java + Classes 2 Para que a JVM crie objetos: Ela precisa saber qual classe o objeto pertence Na classe estão definidos os atributos e métodos Programamos

Leia mais

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding Introdução à Programação Interface, Polimorfismo e Dynamic Binding Interface Programador Java PLENO Possuir sólida experiência em programação Desenvolvimento na linguagem JAVA Webservice, Struts ou JSF(desejável)

Leia mais

Capítulo 11. Conceitos de Orientação a Objetos. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Capítulo 11. Conceitos de Orientação a Objetos. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Capítulo 11 Conceitos de Orientação a Objetos Objetivos do Capítulo Introduzir os conceitos fundamentais da Programação Orientada a Objetos. Apresentar o significado dos objetos e das classes no contexto

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos O FOCO NO MUNDO REAL Orientação a objetos A orientação a objetos (OO) foi concebida na década de 70. Origem na linguagem SIMULA-67 (década de 60 - Noruega), que já implementava

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 10 http://www.ic.uff.br/~bianca/engsoft2/ Aula 10-24/05/2006 1 Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software (Caps. 13 e 14

Leia mais

As principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes:

As principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes: SGBD Características do Emprego de Bancos de Dados As principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes: Natureza autodescritiva

Leia mais

Sumário. Uma visão mais clara da UML

Sumário. Uma visão mais clara da UML Instituto Federal de Santa Catarina Câmpus Chapecó Ensino Médio Integrado em Informática Módulo V Unidade Curricular: Engenharia de Software Professora: Lara P. Z. B. Oberderfer Uma visão mais clara da

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 02 Análise e Projeto OO Edirlei Soares de Lima Análise A análise modela o problema e consiste das atividades necessárias para entender

Leia mais

Engenharia de software para desenvolvimento com LabVIEW: Validação

Engenharia de software para desenvolvimento com LabVIEW: Validação Engenharia de software para desenvolvimento com LabVIEW: Orientação a Objetos, Statechart e Validação André Pereira Engenheiro de Vendas (Grande São Paulo) Alexsander Loula Coordenador Suporte Técnico

Leia mais

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas Programação com Objectos Processamento de Dados I 4. Classes Abstractas 1 Conceito de classe abstracta Declaração de uma classe abstracta Implicações e características das classes abstractas Utilização

Leia mais

PADRÕES DE SOFTWARE. Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade. Grupo de Padrões de Software da UECE (GPS.

PADRÕES DE SOFTWARE. Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade. Grupo de Padrões de Software da UECE (GPS. PADRÕES DE SOFTWARE 1 Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade Grupo de Padrões de Software da UECE (GPS.UECE) Julho-2009 CONTEÚDO Introdução aos Padrões de Software O quê são padrões?

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

Classes Abstratas e Interfaces

Classes Abstratas e Interfaces Classes Abstratas e Interfaces Programação Orientada a Objetos Java Prof. Geraldo Braz Junior Principais conceitos Classes abstratas Interfaces Herança múltipla 2 Simulações (1) Programas são normalmente

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24 Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif:

Leia mais

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd. Apresentação Este curso tem como objetivo, oferecer uma noção geral sobre a construção de sistemas de banco de dados. Para isto, é necessário estudar modelos para a construção de projetos lógicos de bancos

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 01 Orientação a Objetos Edirlei Soares de Lima Paradigmas de Programação Um paradigma de programação consiste na filosofia adotada na

Leia mais

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite Pessoal, fiz uma coletânea das questões mais recentes de concursos públicos de TODO o Brasil de várias bancas diferentes sobre os assuntos Orientação

Leia mais

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio 32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio

Leia mais

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único Pacotes e Encapsulamento Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Introdução Permite o agrupamento de classes em uma coleção chamada pacote Um pacote é uma coleção de classes

Leia mais

Introdução a Java. Hélder Nunes

Introdução a Java. Hélder Nunes Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais

Leia mais

Análise e Projeto de Sistemas

Análise e Projeto de Sistemas Análise e Projeto de Sistemas Rafael Vargas Mesquita http://www.ci.ifes.edu.br ftp://ftp.ci.ifes.edu.br/informatica/mesquita/ Herança O que é herança? Herdar é derivar características de gerações precedentes.

Leia mais

Modelagemde Software Orientadaa Objetos com UML

Modelagemde Software Orientadaa Objetos com UML Modelagemde Software Orientadaa Objetos com UML André Maués Brabo Pereira Departamento de Engenharia Civil Universidade Federal Fluminense Colaborando para a disciplina CIV 2802 Sistemas Gráficos para

Leia mais

Prof. Marcelo Henrique dos Santos

Prof. Marcelo Henrique dos Santos ORIENTAÇÃO A OBJETOS COM PROTOTIPAÇÃO CAPÍTULO 02 CONCEITOS FUNDAMENTAIS OBJETIVOS Definiremos alguns conceitos fundamentais de forma a não deixar dúvidas básicas ou interpretações que nos coloquem em

Leia mais

Curso de Licenciatura em Informática

Curso de Licenciatura em Informática Curso de Licenciatura em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita EXERCÍCIOS SOBRE MODELAGEM DE CASOS DE USO Exercício 1: construa um Diagrama de Casos de

Leia mais

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi 5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem

Leia mais

Roteamento e Comutação

Roteamento e Comutação Roteamento e Comutação Design de Rede Local Design Hierárquico Este design envolve a divisão da rede em camadas discretas. Cada camada fornece funções específicas que definem sua função dentro da rede

Leia mais

Fundamentos de Banco de Dados e Modelagem de Dados

Fundamentos de Banco de Dados e Modelagem de Dados Abril - 2015 Universidade Federal de Mato Grosso Instituto de Computação Pós Graduação Lato Sensu em Banco de Dados Fundamentos de Banco de Dados e Modelagem de Dados Prof. Dr. Josiel Maimone de Figueiredo

Leia mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 07: Funções O comando return Protótipo de funções O tipo void Arquivos-cabeçalho Escopo de variáveis Passagem de parâmetros por valor

Leia mais

Programação com Objectos Teste Teórico 04 de Janeiro de 2010, 09:00 (120 minutos)

Programação com Objectos Teste Teórico 04 de Janeiro de 2010, 09:00 (120 minutos) LEIC-A LEIC-T LERC MEE MEIC-A 2009/2010 (1º Semestre) Teste Teórico (201001040900) 1/10 LEIC-A LEIC-T LERC MEE MEIC-A 2009/2010 (1º Semestre) Teste Teórico 04 de Janeiro de 2010, 09:00 (120 minutos) Nome:

Leia mais

Unidade IV: Ponteiros, Referências e Arrays

Unidade IV: Ponteiros, Referências e Arrays Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática

Leia mais

Tabela de roteamento

Tabela de roteamento Existem duas atividades que são básicas a um roteador. São elas: A determinação das melhores rotas Determinar a melhor rota é definir por qual enlace uma determinada mensagem deve ser enviada para chegar

Leia mais

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Capítulo 14 Herança a e Polimorfismo Objetivos do Capítulo Apresentar os conceitos de herança e de polimorfismo. Explorar os diversos recursos disponíveis no Java para a aplicação da herança e do polimorfismo

Leia mais

3 SCS: Sistema de Componentes de Software

3 SCS: Sistema de Componentes de Software 3 SCS: Sistema de Componentes de Software O mecanismo para acompanhamento das chamadas remotas se baseia em informações coletadas durante a execução da aplicação. Para a coleta dessas informações é necessário

Leia mais

Especificação do 3º Trabalho

Especificação do 3º Trabalho Especificação do 3º Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação,

Leia mais

ORIENTAÇÃO A OBJETOS. Professora Lucélia Oliveira

ORIENTAÇÃO A OBJETOS. Professora Lucélia Oliveira ORIENTAÇÃO A OBJETOS 1 Professora Lucélia Oliveira CONCEITOS Abstração Classes Objetos Atributos Métodos Método Construtor Herança Polimorfismo Sobrecarga Encapsulamento 2 ORIENTAÇÃO A OBJETOS Abstração

Leia mais

Herança e Polimorfismo de Inclusão

Herança e Polimorfismo de Inclusão Herança e Polimorfismo de Inclusão Sérgio Queiroz de Medeiros sergio@ufs.br 29 de maio de 2012 1 Polimorfismo Ad-hoc Coerção Sobrecarga (Overloading) Universal Paramétrico Inclusão 2 Herança Herança é

Leia mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

3. PARADIGMA ORIENTADO A OBJETOS

3. PARADIGMA ORIENTADO A OBJETOS Paradigmas de Linguagens I 1 3. PARADIGMA ORIENTADO A OBJETOS Este paradigma é o que mais reflete os problemas atuais. Linguagens orientada a objetos (OO) são projetadas para implementar diretamente a

Leia mais

Curso - Padrões de Projeto Módulo 2: Padrões de Criação

Curso - Padrões de Projeto Módulo 2: Padrões de Criação Curso - Padrões de Projeto Módulo 2: Padrões de Criação Vítor E. Silva Souza vitorsouza@gmail.com http://www.javablogs.com.br/page/engenho http://esjug.dev.java.net Sobre o Instrutor Formação: Java: Graduação

Leia mais

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos Programação Orientada a Objetos Relacionamentos entre objetos Associação, composição e agregação Construtores e sobrecarga Variáveis de classe e de instância Reinaldo Gomes reinaldo@cefet-al.br Objetos

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Azevedo Dorça Programação Orientada a Objetos II. Padrões de Projeto

Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Azevedo Dorça Programação Orientada a Objetos II. Padrões de Projeto Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Azevedo Dorça Programação Orientada a Objetos II Padrões de Projeto Padrão Decorator (Decorador) Adiciona responsabilidades de forma

Leia mais

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes. 1 Diagrama de Classes Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes. Um dos objetivos do diagrama de classes é definir a base para

Leia mais

Manual de Instalação... 2 RECURSOS DESTE RELÓGIO... 3 1 - REGISTRANDO O ACESSO... 4 1.1 Acesso através de cartão de código de barras:...

Manual de Instalação... 2 RECURSOS DESTE RELÓGIO... 3 1 - REGISTRANDO O ACESSO... 4 1.1 Acesso através de cartão de código de barras:... 0 Conteúdo Manual de Instalação... 2 RECURSOS DESTE RELÓGIO... 3 1 - REGISTRANDO O ACESSO... 4 1.1 Acesso através de cartão de código de barras:... 4 1.2 Acesso através do teclado (digitando a matrícula):...

Leia mais

Introdução à orientação a objetos. João Tito Almeida Vianna 25/05/2013

Introdução à orientação a objetos. João Tito Almeida Vianna 25/05/2013 Introdução à orientação a objetos João Tito Almeida Vianna 25/05/2013 Roteiro Aula 2 Motivação Revisão dos conceitos da aula 1 Preparação para os exercícios Exercícios propostos 2 Motivação A orientação

Leia mais

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis. 3. Tabelas de Hash As tabelas de hash são um tipo de estruturação para o armazenamento de informação, de uma forma extremamente simples, fácil de se implementar e intuitiva de se organizar grandes quantidades

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

Programas eram lineares e com poucos módulos (Programação estruturada) Aumento da complexidade dos sistemas e difícil reusabilidade dos mesmos

Programas eram lineares e com poucos módulos (Programação estruturada) Aumento da complexidade dos sistemas e difícil reusabilidade dos mesmos OO -Objetos, classes, atributos, métodos, estado, comportamento e identidade (Slide) Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Introdução Programas eram lineares e com poucos

Leia mais

Métodos de Construção de Software: Orientação a Objetos. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Métodos de Construção de Software: Orientação a Objetos. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes Métodos de Construção de Software: Orientação a Objetos Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes Problemas com Modelagem Funcional Falta de aproximação de conceitos com o mundo real

Leia mais