Orientação a Objetos. Fernando Camargo 5 de junho de 2017
|
|
- Kátia de Sintra
- 5 Há anos
- Visualizações:
Transcrição
1 Orientação a Objetos Fernando Camargo 5 de junho de 2017 ZG Soluções
2 Por que um tema tão básico?
3 Por que um tema tão básico? 1
4 Vantagens da Qualidade de Código
5 Tempo gasto com código de má qualidade Features 20.0% 80.0% Bugs 2
6 Tempo gasto com código de boa qualidade Bugs 25.0% 75.0% Features 3
7 Avaliando um Código OO
8 4
9 Repetição de código (DRY) Don t Repeat Yourself 5
10 Repetição de código (DRY) Don t Repeat Yourself Lógica duplicada deve ser eliminada via abstração 5
11 Complexidade de código int qtd = 0; Integer kicker = null; String carta = null; for(string c:cartas){ if(carta == null){ carta = c.substring(0, 1); kicker = this.getpeso(c.substring(0, 1)); qtd++; }else{ if(carta.equals(c.substring(0, 1))){ qtd++; }else{ carta = c.substring(0, 1); if(kicker == null){ kicker = this.getpeso(c.substring(0, 1)); } } } } if(qtd==4){ return kicker; } return null; 6
12 Complexidade de código 7
13 Acoplamento 8
14 Acoplamento Não existe zero acoplamento 9
15 Acoplamento Não existe zero acoplamento Baixo acoplamento alterações pontuais 9
16 Acoplamento Não existe zero acoplamento Baixo acoplamento alterações pontuais Alto acoplamento alterações em todo o código/em cascata 9
17 O que causa alto acoplamento? Classes sabem demais sobre as outras 10
18 O que causa alto acoplamento? Classes sabem demais sobre as outras Acesso direto de propriedades 10
19 O que causa alto acoplamento? Classes sabem demais sobre as outras Acesso direto de propriedades Construção de dependências 10
20 O que causa alto acoplamento? Classes sabem demais sobre as outras Acesso direto de propriedades Construção de dependências Uso de implementações ao invés de interfaces 10
21 O que causa alto acoplamento? Classes sabem demais sobre as outras Acesso direto de propriedades Construção de dependências Uso de implementações ao invés de interfaces Falta de organização estruturada das classes (separação de camadas) 10
22 Coesão Classes Baixa coesão múltiplos métodos com responsabilidades/tarefas não relacionadas 11
23 Coesão Classes Baixa coesão múltiplos métodos com responsabilidades/tarefas não relacionadas Alta coesão classe possui uma única responsabilidade/tarefa, com métodos relacionados a ela 11
24 Coesão Classes Baixa coesão múltiplos métodos com responsabilidades/tarefas não relacionadas Alta coesão classe possui uma única responsabilidade/tarefa, com métodos relacionados a ela Métodos Baixa coesão método realiza várias tarefas 11
25 Coesão Classes Baixa coesão múltiplos métodos com responsabilidades/tarefas não relacionadas Alta coesão classe possui uma única responsabilidade/tarefa, com métodos relacionados a ela Métodos Baixa coesão método realiza várias tarefas Alta coesão método com uma única tarefa, podendo chamar métodos que a complemente 11
26 Sintomas de Projeto de Classes em Degradação
27 Sintomas Rigidez: toda mudança causa uma cascata de mudanças subsequentes em módulos dependentes 12
28 Sintomas Rigidez: toda mudança causa uma cascata de mudanças subsequentes em módulos dependentes Fragilidade: mudanças acarretam em quebras em muitos lugares diferentes 12
29 Sintomas Rigidez: toda mudança causa uma cascata de mudanças subsequentes em módulos dependentes Fragilidade: mudanças acarretam em quebras em muitos lugares diferentes Imobilidade: impossibilidade de reusar módulos em outros projetos 12
30 Sintomas Rigidez: toda mudança causa uma cascata de mudanças subsequentes em módulos dependentes Fragilidade: mudanças acarretam em quebras em muitos lugares diferentes Imobilidade: impossibilidade de reusar módulos em outros projetos Viscosidade: fácil fazer a coisa errada e difícil fazer a coisa certa 12
31 Sintomas Rigidez: toda mudança causa uma cascata de mudanças subsequentes em módulos dependentes Fragilidade: mudanças acarretam em quebras em muitos lugares diferentes Imobilidade: impossibilidade de reusar módulos em outros projetos Viscosidade: fácil fazer a coisa errada e difícil fazer a coisa certa Complexidade desnecessária: muitos elementos inúteis ou não utilizados (dead code) 12
32 Sintomas Rigidez: toda mudança causa uma cascata de mudanças subsequentes em módulos dependentes Fragilidade: mudanças acarretam em quebras em muitos lugares diferentes Imobilidade: impossibilidade de reusar módulos em outros projetos Viscosidade: fácil fazer a coisa errada e difícil fazer a coisa certa Complexidade desnecessária: muitos elementos inúteis ou não utilizados (dead code) Repetição desnecessária: falta de abstração apropriada para evitar repetição de código 12
33 Sintomas Rigidez: toda mudança causa uma cascata de mudanças subsequentes em módulos dependentes Fragilidade: mudanças acarretam em quebras em muitos lugares diferentes Imobilidade: impossibilidade de reusar módulos em outros projetos Viscosidade: fácil fazer a coisa errada e difícil fazer a coisa certa Complexidade desnecessária: muitos elementos inúteis ou não utilizados (dead code) Repetição desnecessária: falta de abstração apropriada para evitar repetição de código Opacidade: código difícil de ser entendido 12
34 SOLID
35 Single Responsibility Principle 13
36 Single Responsibility Principle Uma classe deve ter um, e somente um, motivo para mudar. 14
37 Single Responsibility Principle Mudanças de requisitos mudanças nas responsabilidades 15
38 Single Responsibility Principle Mudanças de requisitos mudanças nas responsabilidades Classes com múltiplas responsabilidades: Múltiplos motivos de mudança 15
39 Single Responsibility Principle Mudanças de requisitos mudanças nas responsabilidades Classes com múltiplas responsabilidades: Múltiplos motivos de mudança Acoplamento das responsabilidades difícil alteração 15
40 Single Responsibility Principle Mudanças de requisitos mudanças nas responsabilidades Classes com múltiplas responsabilidades: Múltiplos motivos de mudança Acoplamento das responsabilidades difícil alteração Conclusão: uma classe deve ter uma única responsabilidade 15
41 Open/Closed Principle 16
42 Open/Closed Principle Entidades de Software (classes, módulos, funções, etc.) devem ser abertas para extensão, mas fechadas para modificação. 17
43 Open/Closed Principle Uma mudança deve resultar em uma cascata de mudanças em classes dependentes. 18
44 Open/Closed Principle Uma mudança deve resultar em uma cascata de mudanças em classes dependentes. Mudanças de requisito adição de código novo sem alteração de código existente 18
45 Open/Closed Principle Uma mudança deve resultar em uma cascata de mudanças em classes dependentes. Mudanças de requisito adição de código novo sem alteração de código existente Como? 18
46 Open/Closed Principle Uma mudança deve resultar em uma cascata de mudanças em classes dependentes. Mudanças de requisito adição de código novo sem alteração de código existente Como? Abstrações que permitam um grupo ilimitado de possíveis comportamentos classes abstratas e interfaces 18
47 Open/Closed Principle Uma mudança deve resultar em uma cascata de mudanças em classes dependentes. Mudanças de requisito adição de código novo sem alteração de código existente Como? Abstrações que permitam um grupo ilimitado de possíveis comportamentos classes abstratas e interfaces Novos comportamentos adicionados por herança ou implementação de interface 18
48 Open/Closed Principle Uma mudança deve resultar em uma cascata de mudanças em classes dependentes. Mudanças de requisito adição de código novo sem alteração de código existente Como? Abstrações que permitam um grupo ilimitado de possíveis comportamentos classes abstratas e interfaces Novos comportamentos adicionados por herança ou implementação de interface Classes dependem da abstração (fixa), não da implementação 18
49 Open/Closed Principle 19
50 Liskov Substitution Principle 20
51 Liskov Substitution Principle Uma classe base deve poder ser substituída pela sua classe derivada. 21
52 Liskov Substitution Principle Extensão do Open/Closed Principle 22
53 Liskov Substitution Principle Extensão do Open/Closed Principle Classes derivadas não podem alterar o comportamento de classes base 22
54 Liskov Substitution Principle class Square extends Rectangle { public void setwidth(int width){ this.width = width; this.height = width; } } public void setheight(int height){ this.width = height; this.height = height; } class LspTest { private static Rectangle getnewrectangle() { return new Square(); } public static void main (String args[]) { Rectangle r = LspTest.getNewRectangle(); r.setwidth(5); r.setheight(10); System.out.println(r.getArea()); // Resultado: 100 ao invés de 50 } } 23
55 Interface Segregation Principle 24
56 Interface Segregation Principle Muitas interfaces específicas são melhores do que uma interface única. 25
57 Interface Segregation Principle Interfaces poluídas prejudicam a coesão 26
58 Interface Segregation Principle Interfaces poluídas prejudicam a coesão Clientes não devem ser forçados a depender de interfaces que eles não usam 26
59 Interface Segregation Principle Interfaces poluídas prejudicam a coesão Clientes não devem ser forçados a depender de interfaces que eles não usam Dependência de interfaces gordas gera acoplamento entre implementações 26
60 Interface Segregation Principle Interfaces poluídas prejudicam a coesão Clientes não devem ser forçados a depender de interfaces que eles não usam Dependência de interfaces gordas gera acoplamento entre implementações Diferentes clientes (implementações com diferentes responsabilidades) diferentes interfaces 26
61 ERRADO! interface Worker { void work(); void eat(); } class FactoryWorker implements Worker { public void work() { /* implementation */ } public void eat() { /* implementation */ } } class Robot implements Worker { public void work() { /* implementation */ } public void eat() { /*??? */ } } 27
62 CORRETO! interface Workable { public void work(); } interface Feedable{ public void eat(); } class FactoryWorker implements Workable, Feedable { public void work() { /* implementation */ } public void eat() { /* implementation */ } } class Robot implements Workable { public void work() { /* implementation */ } } 28
63 Dependency Inversion Principle 29
64 Dependency Inversion Principle Dependa de uma abstração e não de uma implementação. 30
65 Dependency Inversion Principle Implementações de baixo nível podem ser alteradas 31
66 Dependency Inversion Principle Implementações de baixo nível podem ser alteradas Uso dessas implementações alto acoplamento alterações de dependentes 31
67 Dependency Inversion Principle Implementações de baixo nível podem ser alteradas Uso dessas implementações alto acoplamento alterações de dependentes Uso de abstrações de alto nível (interfaces) baixo acoplamento 31
68 ERRADO! 32
69 CORRETO! 33
70 Conclusões
71 Conclusões Evite repetições de código 34
72 Conclusões Evite repetições de código Aplique os princípios SOLID para aumentar coesão e reduzir acoplamento 34
73 Conclusões Evite repetições de código Aplique os princípios SOLID para aumentar coesão e reduzir acoplamento Estude Padrões de Projeto 34
MDA (Model Driven Architecture) e Princípios de bons Projetos de Software
MDA (Model Driven Architecture) e Princípios de bons Projetos de Software Reginaldo Neto, Lourival Coqueiro, Luzinaldo Cruz, Rodrigo Santos Pós-Graduação Salvador (UNIFACS) Abstract. This article aims
Leia maisProgramação Orientada a Objetos Relacionamentos entre classes
Programação Orientada a Objetos Relacionamentos entre classes Prof. Vicente Paulo de Camargo RELACIONAMENTO ENTRE CLASSES Interface agregação Dependencia composição generalização associação RELACIONAMENTO
Leia maisUNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS
Data final de entrega 16/09/2014, até às 23h59min Enviar o arquivo de respostas em formato PDF e o arquivozip com códigos fontes para o e-mail motafernandomaia@gmailcom, insira no assunto do e-mail [Lista
Leia maispadrões, antipadrões e solid
padrões, antipadrões e solid engenharia de sistemas de informação Daniel Cordeiro 24 de novembro de 2017 Escola de Artes, Ciências e Humanidades EACH USP princípios solid para poo Motivação 1 : minimizar
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)
Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça Problema: Definir uma dependência um-para-muitos entre objetos, de forma quando o estado
Leia maisMódulo III Padrões GOF
Módulo III Padrões GOF Professores Eduardo Bezerra edubezerra@gmail.com Ismael H F Santos ismael@tecgraf.puc-rio.br April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Ementa Introdução aos
Leia maisAnálise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 10 Padrões GoF (Protoype e Façade) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype Singleton
Leia maisEstratégias de Escrita de Testes Automatizados
Estratégias de Escrita de Testes Automatizados Paulo Cheque 12/02/2009 Verão 2009 2 Sobre a Palestra Refatoração TAD TFD/POUT TDD BDD Padrões e Anti padrões 3 (Refatoração) Uma modificação feita em pequenos
Leia maisSabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes.
JAVA ENCAPSULAMENTO Na linguagem de programação Java, a classe é o alicerce para o encapsulamento, o qual é definido como uma técnica que faz com que os atributos da classe permaneçam ocultos, pois desta
Leia maisBoas 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 maisPrincípios do Projeto de Classes
Princípios do Projeto de Classes Fernando Magno Quintão Pereira September 1, 2010 Questão 1 OCP A companhia de brinquedos Toy Inc. precisa de um sistema para controlar sua folha de pagamento. Esta companhia
Leia maisVisitor. 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 mais1 Introdução e Conceitos básicos
1 Introdução e Conceitos básicos Aula 02 Sumário Capítulo 1 Introdução e Conceitos básicos 1.1 Modelos 1.2 Tipos primitivos de dados 1.3 Tipo Abstrato de dados 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2
Leia maisProgramação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos
Programação Orientada a Objetos Vagner Luz do Carmo - Vluzrmos Questão 1 Dada a seguinte classe na linguagem JAVA: public class Carro { public String retornacor(){ ; return Azul ; private String retornachassi(){
Leia maisLinguagem de programação Programação Orientada a objetos
Instituto Federal de Minas Gerais Campus Ponte Nova Linguagem de programação Programação Orientada a objetos Professor: Saulo Henrique Cabral Silva Paradigma da orientação a objetos Paradigma = forma de
Leia maisProgramação Orientada a Objetos Classes Abstratas. Sérgio Soares
Programação Orientada a Objetos Classes Abstratas Sérgio Soares scbs@cin.ufpe.br Até aqui Quando usar herança? Ao redefinir um método manter o comportamento herdado! 2 Adivinhem... Surge um novo requisito
Leia maisTratamento de Erros. Sérgio Luiz Ruivace Cerqueira
Tratamento de Erros Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Agenda Introdução Try, catch, finally Unchecked Exceptions Como levantar exceções Boas práticas O problema Calculadora numero1:
Leia maisProgramaçã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 maisBCC Engenharia de Software Professor Rodrigo Andrade
BCC Engenharia de Software 2017.1 Professor Rodrigo Andrade Aula Passada Implementação, Manutenção e Execução dos testes Implementação e Manutenção de Funcionalidades Qualidade de código visão caixa preta
Leia maisEngenharia 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 maisUNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS
Data final de entrega 16/09/2014, até às 23h59min Enviar o arquivo de respostas em formato PDF e o arquivozip com códigos fontes para o e-mail motafernandomaia@gmailcom, insira no assunto do e-mail [Lista
Leia maisPadrõ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 maisClasse Abstrata e Interface
Orientação a objetos com Java Classe Abstrata e Interface Byron Leite byron.leite@gmail.com 1 Herança Agenda Geral Parte 04 Encapsulamento Pacotes Modificadores de Acesso private, default, protected, public
Leia maisLEIC-A / MEIC-A 2007/2008 (1º
1/11 LEIC-A / MEIC-A 2007/2008 (1º Semestre) Teste (versão A) 08 de Janeiro de 2008, 09:00 (120 minutos) Nome: Primeira Parte (5 valores) PERGUNTA RESPOSTA 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 Segunda
Leia maisPráticas de desenvolvimento aplicadas na automação de testes com Selenium Robson Bittencourt #gutsrs
Práticas de desenvolvimento aplicadas na automação de testes com Selenium Robson Bittencourt #gutsrs /@gutsrs Programação 19h15 às 19h45 Recepção, boas vindas e Coffee para integração 19h45 às 19h55 Abertura
Leia maisProgramação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs
Programação Orientada a Objetos Professor: André Luis Meneses Silva andreluis.ms@gmail.com br.geocities.com/programacao2ufs [ Conteúdo ] Objeto Mensagens Classe Encapsulamento Visibilidade Membros de Instância
Leia maisUNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas
UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra
Leia maisAula 12: Princípios da Coesão de Pacotes
Aula 12: Princípios da Coesão de Pacotes Programação Modular Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) Roteiro Projeto de classes Modularização fundamental para garantir a qualidade de software
Leia maisPolimorfismo em Java TM. por Jorge H C Fernandes CESAR-DI-UFPE Recife, 1999
Polimorfismo em Java TM por Jorge H C Fernandes (jhcf@di.ufpe.br) CESAR-DI-UFPE Recife, 1999 Polimorfismo Técnica para criação de código adaptável a mudanças, o que reduz o esforço de manutenção de código
Leia maisAnálise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 11 Padrões GoF (Bridge e Decorator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype Singleton
Leia maisProf. Vicente Paulo de Camargo UML - INTRODUÇÃO UML = Unified Modeling Language = linguagem de modelagem de sistemas Permite especificar, visualizar e documentar modelos de software orientados a objetos
Leia mais6 Polimorfismo. Desenvolvimento OO com Java. Vítor E. Silva Souza ~ vitorsouza
Desenvolvimento OO com Java 6 Polimorfismo 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 Espírito
Leia maisJava 2 Standard Edition Classes internas
Java 2 Standard Edition Classes internas Helder da Rocha www.argonavis.com.br 1 Classes internas Classes podem ser membros de classes, de objetos ou locais a métodos. Podem até serem criadas sem nome,
Leia maisCompiladores Análise Semântica
Compiladores Análise Semântica Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp Árvores Sintáticas Abstratas (ASTs) A árvore de análise sintática tem muita informação redundante Separadores,
Leia mais9 Classes Abstractas e Interfaces
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisParadigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto
Suporte para Programação Orientada a Objeto Cristiano Lehrer Categoria das Linguagens que Suportam POO Suporte a POO acrescentado a uma linguagem já existente: C++ (também suporta programação procedural
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato
Leia maisEncapsulamento. Separa a interface de um objeto dos detalhes de seu funcionamento interno. Caixa preta 2/27
Encapsulamento Encapsulamento entrada Caixa preta saída 2/27 Separa a interface de um objeto dos detalhes de seu funcionamento interno Encapsulamento Esconder os detalhes de implementação de um componente
Leia maisOrientação a Objetos - Herança
Orientação a Objetos - Herança 1 Repetindo Código p Todo banco tem funcionário. A classe funcionario ficaria da seguinte forma; class Funcionario { String nome; String cpf; double salario; // métodos devem
Leia maisEngenharia de Software
UNIVERSIDADE DE LISBOA INSTITUTO SUPERIOR TÉCNICO Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre 2 o Teste, 8 de Junho de 2016 Nome: Número: Este teste tem um conjunto de 10 perguntas de escolha
Leia maisHerança. Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman SISTEMAS DE INFORMAÇÃO 1
Herança Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman 1 1 1 Motivação Você está desenvolvendo um sistema de gerenciamento de pessoal para a USP Precisa fazer: Cadastro de alunos e professores
Leia maisINF1013 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 maisPadrã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 maisHerança e Polimorfismo
Herança e Polimorfismo 2013 O que veremos hoje? Herança e polimorfismo Transparências baseadas no material do Prof. Gilbert Azevedo e Prof. Jailton Carlos Objetivos Conceito de Polimorfismo em POO Mais
Leia maisLinguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces
Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Professora Sheila Cáceres Polimorfismo Polimorfismo Polimorfismo é a característica única de linguagens orientadas
Leia maisEngenharia de Software
Engenharia de Software Design Principles Representando SW em UML OO em C Pattens úteis para embedded Rodrigo M A Almeida Design Principles Design Principles são guias para decompor as funcionalidades e
Leia maisProgramação Orientada por Objectos 2010/11. 2º Exame 28 de Junho de 2011
Programação Orientada por Objectos 2010/11 2º Exame 28 de Junho de 2011 Instruções (leia com cuidado): Escreva de forma CLARA o seu nome e número em todas as folhas. O exame contém 8 páginas dividido em
Leia maisnome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){
UNIVERSIDADE FEDERAL DE SANTA CATARINA - Departamento de Automação e Sistemas PROGRAMAÇÃO DE SISTEMAS AUTOMATIZADOS - 2016/2 - P2 Nome: ------------------------------------------------------------------------------------------------------
Leia maisp Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco
1 Expandindo o Sistema p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco class Diretor extends Funcionario { public boolean autentica(int senha)
Leia maisInterfaces POO. Prof. Marcio Delamaro
Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisProgramação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -
Programação Java - Herança, Classes Abstratas e Interfaces - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Herança Ligação Dinâmica Polimorfismo 2 Herança Herança é um conceito que mapeia as classes
Leia maisModelo do Mundo Real. Abstração. Interpretação
Modelo do Mundo Real Mundo Real Abstração Interpretação Sistema de Software Modelo Algoritmo Abstração: O modelo precisa capturar apenas as características do mundo real que são importantes para o sistema
Leia maisPOO UML e Outros Conceitos. Prof. Vicente Paulo de Camargo
Prof. Vicente Paulo de Camargo UML - INTRODUÇÃO UML = Unified Modeling Language = linguagem de modelagem de sistemas Permite especificar, visualizar e documentar modelos de software orientados a objetos
Leia maisUniversidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Ciências da Computação KÊNIA FERREIRA DE JESUS
Universidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Ciências da Computação KÊNIA FERREIRA DE JESUS OS MANDAMENTOS DA PROGRAMAÇÃO MODULAR EM JAVA Belo Horizonte 2016 Universidade
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Interfaces Uma interface é uma forma abstrata de descrever um objeto A classe fixa a forma de um objeto
Leia maisEngenharia 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 maisLista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }
Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos
Leia maisLEIC-T LERC MEIC-T 2011/2012 1º Semestre Programação com Objetos 2012/01/07 11h00m 3/10
2/10 1.1. (1.5 val.) Os mecanismos de herança entre classes e de composição de objetos são, por vezes, apresentados como alternativos, face à disponibilização de funcionalidade a uma classe. Compare-os,
Leia maisPOO29004 Programação Orientada a Objetos
POO29004 Programação Orientada a Objetos Classe abstrata, interface e polimorfismo Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
7 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisAula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU
Aula 5 POO 1 Encapsulamento Profa. Elaine Faria UFU - 2019 Sobre o Material Agradecimentos Aos professores José Gustavo e Fabiano, por gentilmente terem cedido seus materiais. Os slides consistem de adaptações
Leia maisPadrõ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 maisUniversidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos 2 Prof. Fabiano Dorça. Padrões de Projeto.
Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos 2 Prof. Fabiano Dorça Padrões de Projeto Permite definir famílias de comportamentos, que podem ser (re)utilizados
Leia maisUnidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces
Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces 0 Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces Classes Abstratas À medida que você sobe na hierarquia de herança,
Leia maisTestes Automatizados. Paulo Cheque. 27/01/2009 Verão 2009
Testes Automatizados Paulo Cheque 27/01/2009 Verão 2009 Erros de Software Causam prejuízos de aproximadamente $59.5 bi na economia dos Estados Unidos Fonte: NIST/2002 http://www.nist.gov 2 Estratégias
Leia maisAnálise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 05 Padrões GoF (Singleton e Iterator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype
Leia mais4 Conceito de Herança
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Leia maisAtribuições: Valores, Ponteiros e Referências
Atribuições: Valores, Ponteiros e Referências Estruturas de Dados Prof. Vilson Heck Junior Sobre Variáveis Aprendemos, em introdução à programação, que possuem 3 partes mais importantes: Nome; Tipo de
Leia maisAula 08 Encapsulamento. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes
Aula 08 Encapsulamento Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Projeto Orientado a Objetos Princípios: Abstração; Encapsulamento; Modularidade.
Leia mais1 - O que será impresso quando o seguinte programa escrito na linguagem JAVA for compilado e executado?
1 - O que será impresso quando o seguinte programa escrito na int i; do i++; while(i < 0); System.out.println(i); a) O programa não compila pois a variável i não foi inicializada. b) O programa compila,
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos Classes, Atributos e Métodos Msc. Paulo de Tarso F. Júnior 1 Introdução Programas eram lineares e com poucos módulos: PE Programação Estruturada Aumento da complexidade
Leia maisPadrões de Projeto em Desenvolvimento Web SCC 266. Prof. Renata Pontin M. Fortes renata@icmc.usp.br PAE: Willian Watanabe (watinha@gmail.
Padrões de Projeto em Desenvolvimento Web SCC 266 Prof. Renata Pontin M. Fortes renata@icmc.usp.br PAE: Willian Watanabe (watinha@gmail.com) 2.semestre 2010 Instituto de Ciências Matemáticas e de Computação
Leia maisComputação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:
Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz - 2015/05/13 Questão: 1 2 3 4 5 6 Total Pontos: 20 15 15 10 10 30 100 Gráu: 1. Defina os termos listados a seguir: (a) (10 Pontos)
Leia maisPOO29004 Programação Orientada a Objetos
POO29004 Programação Orientada a Objetos Classe abstrata, interface e polimorfismo Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo
Leia maisInterfaces 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 maisPadrões para atribuir responsabilidades: Expert
Padrão para atribuir responsabilidades: Expert Introdução Um sistema OO é composto de objetos que enviam mensagens uns para os outros Uma mensagem é um método executado no contexto de um objeto Escolher
Leia maisPROGRAMAÇÃO ORIENTADA A
PROGRAMAÇÃO ORIENTADA A OBJETOS II -TÉCNICAS DE OO Prof. Angelo Augusto Frozza, MS M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 4. Técnicas de Orientação a Objetos Classes e objetos Herança Métodos Subscritos
Leia maisIntrodução a Programação Orientada a Aspectos
Introdução a Programação Orientada a Aspectos Parte 1 - Orientação a objetos Um objeto é um componente de software - uma parte de um sistema que exibe certas características específicas. A seguir são algumas
Leia maisEncapsulamento. Introdução à Programação André L. Santos
Encapsulamento Introdução à Programação André L. Santos Pacotes A pacotes são módulos que agrupam classes, forçosamente separadas ao nível do sistema de ficheiros. De modo a definir que uma classe pertence
Leia maisPolimorfismo. O que é polimorfismo?
O que é polimorfismo? Polimorfismo Significa que variáveis podem referenciar mais do que um tipo. Não é um conceito novo e várias linguagens de programação aplicam. Funções são polimórficas quando seus
Leia maisEngenharia 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 maisDiagrama de Classes. Conceitos Básicos. prof. Robinson Vida Monday, April 20, 15
Diagrama de Classes Conceitos Básicos prof. Robinson Vida (vida@utfpr.edu.br) 1 Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e
Leia maisAspectos para Construção de Aplicações Distribuídas
Aspectos para Construção de Aplicações Distribuídas Cristiano Amaral Maffort maffort@gmail.com Programa de Pós-Graduação em Informática PUC Minas Belo Horizonte MG 12 de junho de 2007 Middleware Objetivo:
Leia maisExceções AULA 13. Ricardo Massa F. Lima Sérgio C. B. Soares
Introdução a Programação IF669 http://www.cin.ufpe.br/~if669 Exceções AULA 13 Ricardo Massa F. Lima rmfl@cin.ufpe.br Sérgio C. B. Soares scbs@cin.ufpe.br Exceções Objetivo Depois desta aula você será capaz
Leia maisPROGRAMAÇÃO ORIENTADA A OBJETOS II -TÉCNICAS DE OO. Prof. Angelo Augusto Frozza, M.Sc.
PROGRAMAÇÃO ORIENTADA A OBJETOS II -TÉCNICAS DE OO Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 4. Técnicas de Orientação a Objetos Classes e objetos Herança Métodos Subscritos
Leia maisOportunidades de refatoração. Prof. André Luiz Peron Martins Lanna
Oportunidades de refatoração Prof. André Luiz Peron Martins Lanna Agenda Introdução Maus cheiros de código Código duplicado Método longo Classe inchada Lista de parâmetros longa demais Mudanças divergentes
Leia maisProgramação por Objectos. Java
Programação por Objectos Java Parte 7: Interfaces LEEC@IST Java 1/31 Interfaces revisão (1) Uma interface é um conjunto de protótipos de métodos (sem implementações) que especifica um serviço bem definido:
Leia maisDefinição. Em POO, a abstração é o processo de esconder os detalhes de implementação de uma aplicação.
Abstração JAVA Definição Em POO, a abstração é o processo de esconder os detalhes de implementação de uma aplicação. Em Java, a abstração é alcançada através de classes abstratas e interfaces. Classes
Leia maisUNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS
Professor: Fernando Maia da Mota Orientações Básicas Leia atentamente as instruções para cada questão. A prova deverá ser feita a lápis ou caneta (preta ou azul) em uma folha de rascunho que será fornecida
Leia maisFundamentos de programação
Fundamentos de programação Orientação a Objeto Composição Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Reuso de código Desenvolvimento eficiente de código é baseado em reuso Reuso
Leia maisLinguagem Algorítmica OO. Linguagem Algorítmica
UFSC-CTC-INE INE5384 - Estruturas de Dados Linguagem Algorítmica OO Prof. Ronaldo S. Mello 2002/2 Linguagem Algorítmica Independente de linguagem de programação OO Utilizada para: Exemplificar os algoritmos
Leia maisTema da aula Introdução ao paradigma de programação: Orientado a Objetos
Profa. Juliana Santiago Teixeira Disciplina: Programação Orientada a Objetos I Tema da aula Introdução ao paradigma de programação: Orientado a Objetos Paradigma Paradigma é a filosofia adotada na construção
Leia maisInstituto de Matemática e Estatística Universidade de São Paulo. Princípios SOLID. Caio Costa Salgado Leonardo Pereira Macedo Rodrigo Siqueira Jordão
Instituto de Matemática e Estatística Universidade de São Paulo Princípios SOLID Caio Costa Salgado Leonardo Pereira Macedo Rodrigo Siqueira Jordão 22 de Junho de 2016 Sumário 1 Introdução Responsabilidade
Leia maisProgramação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos
Programação Orientada a Objetos: Herança Alexandre César Muniz de Oliveira Análise e Projeto Orientados a Objetos A análise orientada a objetos Determina o que o sistema deve fazer: Quais os atores envolvidos?
Leia maisPadrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões
DCC / ICEx / UFMG Padrões de Projeto Padrões de Projeto Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Um padrão é uma descrição do problema e a essência da sua solução Documenta boas soluções para
Leia mais