Refatorando

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

Download "Refatorando"

Transcrição

1 Refatorando

2 @marcosbrizeno

3 A única maneira de ir rápido é ter qualidade

4

5

6 esforço tempo

7 esforço prazo tempo

8 esforço tempo

9 O Scrum resolve esse problema!

10 esforço... tempo

11 esforço... tempo Iteração 1 Iteração 2... Iteração n

12 You can't ship process

13 A única maneira de ir rápido é ter qualidade

14 Mão na massa: Renomear um método

15 Mão na massa: Renomear um método

16

17 Renomear um método é simples!

18 Renomear um método é simples! - Muda o nome do método

19 Renomear um método é simples! - Muda o nome do método - Procura onde é chamado e atualiza

20 Renomear um método é simples! - Muda o nome do método - Procura onde é chamado e atualiza - Roda os testes

21 Renomear um método é simples!

22 Renomear um método é simples? - Quem chama o método vai quebrar? (conflitos de nomes)

23 Renomear um método é simples? - Quem chama o método vai quebrar? (conflitos de nomes) - Mudar o nome do método não vai quebrar outro ponto? (metaprogramação)

24 Renomear um método é simples? - Quem chama o método vai quebrar? (conflitos de nomes) - Mudar o nome do método não vai quebrar outro ponto? (metaprogramação) - Tudo ou nada!

25 Refactoring vs Rehacktoring REFACTORING - Testes passam a cada mudança REHACKTORING - Testes talvez passem

26 Refactoring vs Rehacktoring REFACTORING REHACKTORING - Testes passam a cada mudança - Testes talvez passem - Mantém comportamento externo - Talvez mantém o comportamento

27 Refactoring vs Rehacktoring REFACTORING REHACKTORING - Testes passam a cada mudança - Testes talvez passem - Mantém comportamento externo - Talvez mantém o comportamento - Uma mudança por vez - Várias mudanças

28 Refactoring vs Rehacktoring REFACTORING REHACKTORING - Testes passam a cada mudança - Testes talvez passem - Mantém comportamento externo - Talvez mantém o comportamento - Uma mudança por vez - Várias mudanças - Visão clara do objetivo final - Objetivo final incerto

29 Refatoração: Renomear método 1. Declare um método com o novo nome

30 Refatoração: Renomear método 1. Declare um método com o novo nome a. Rode os testes

31 Refatoração: Renomear método 1. Declare um método com o novo nome a. 2. Rode os testes Copie o código do método antigo para o novo (adaptando os parâmetros) a. Rode os testes

32 Refatoração: Renomear método 1. Declare um método com o novo nome a. 2. Copie o código do método antigo para o novo (adaptando os parâmetros) a. 3. Rode os testes Rode os testes Faça o método antigo chamar o novo a. Rode os testes

33 Refatoração: Renomear método 1. Declare um método com o novo nome a. 2. Copie o código do método antigo para o novo (adaptando os parâmetros) a. 3. Rode os testes Faça o método antigo chamar o novo a. 4. Rode os testes Rode os testes Troque o método novo pelo método antigo (um por vez) a. Rode os teste

34 Sério? Sério

35

36 Problemas ao refatorar Falta de feedback

37 Problemas ao refatorar Falta de feedback Ciclo longo

38 Problemas ao refatorar Falta de feedback Ciclo longo Visão técnica

39 Mão na massa: Revisar um Pull Request Julia Carlos

40 Mão na massa: Revisar um Pull Request

41 Mão na massa: Revisar um Pull Request

42 Mão na massa: Revisar um Pull Request

43 Mão na massa: Revisar um Pull Request

44

45 Mão na massa: Revisar um Pull Request - Outras classes vão ter preços - - Também vão precisar retornar uma string com o preço cotado Será necessário ter mais operações envolvendo dinheiro - Somar, subtrair, etc.

46

47 Seu código está "ruim". Mas por quê?

48 Code Smells

49 Code Smells Name five Code Smells.

50 Code Smells

51 Code Smells

52 Long Method Large Class Primitive obsession Long Parameter List Data Clump Switch statements Temporary field Refused Bequest Alternative classes with diff interfaces Code Smells Divergent Change Shotgun Surgery Parallel Inheritance Feature envy Inappropriate Intimacy Message Chains Middle Man Lazy Class Data Class Duplicated Code Dead Code Speculative Generality

53 Long Method Large Class Primitive obsession Long Parameter List Data Clump Switch statements Temporary field Refused Bequest Alternative classes with diff interfaces Bloaters Divergent Change Shotgun Surgery Parallel Inheritance Feature envy Inappropriate Intimacy Message Chains Middle Man Lazy Class Data Class Duplicated Code Dead Code Speculative Generality

54 Long Method Large Class Primitive obsession Long Parameter List Data Clump Switch statements Temporary field Refused Bequest Alternative classes with diff interfaces Divergent Change Shotgun Surgery Parallel Inheritance Feature envy Inappropriate Intimacy Message Chains Middle Man Lazy Class Data Class Duplicated Code Dead Code Speculative Generality Object Orientation Abusers

55 Divergent Change Shotgun Surgery Parallel Inheritance Long Method Large Class Primitive obsession Long Parameter List Data Clump Switch statements Temporary field Refused Bequest Alternative classes with diff interfaces Feature envy Inappropriate Intimacy Message Chains Middle Man Lazy Class Data Class Duplicated Code Dead Code Speculative Generality Change Preventers

56 Long Method Large Class Primitive obsession Long Parameter List Data Clump Switch statements Temporary field Refused Bequest Alternative classes with diff interfaces The Couplers Divergent Change Shotgun Surgery Parallel Inheritance Feature envy Inappropriate Intimacy Message Chains Middle Man Lazy Class Data Class Duplicated Code Dead Code Speculative Generality

57 Long Method Large Class Primitive obsession Long Parameter List Data Clump Switch statements Temporary field Refused Bequest Alternative classes with diff interfaces The Dispensables Divergent Change Shotgun Surgery Parallel Inheritance Feature envy Inappropriate Intimacy Message Chains Middle Man Lazy Class Data Class Duplicated Code Dead Code Speculative Generality

58 Por onde começar? 99 Bottles of OOP

59 Code Smell: Data Clump

60 Code Smell: Data Clump lib/series.rb

61 Code Smell: Data Clump lib/series.rb

62 Code Smell: Data Clump lib/series.rb

63 Code Smell: Data Clump lib/series.rb

64 Code Smell: Data Clump lib/series.rb

65 Mão na massa: introduzir Value Class 1. Criar uma Value Class com construtores e getters a. Deve incluir o valor e a moeda 2. Encapsular atributos ao invés de chamá-las diretamente 3. Instanciar Value Object junto com os atributos 4. Trocar chamada getter por getter da Value Class 5. Apagar atributos não utilizados

66

67 Value Class para representar dinheiro lib/series.rb

68 Value Class para representar dinheiro lib/dinheiro.rb

69 Value Class para representar dinheiro lib/dinheiro.rb

70 Value Class para representar dinheiro lib/dinheiro.rb

71 Encapsular atributos preco e moeda lib/serie.rb

72 Encapsular atributos preco e moeda lib/serie.rb

73 Encapsular atributos preco e moeda lib/serie.rb

74 Encapsular atributos preco e moeda lib/serie.rb

75 Encapsular atributos preco e moeda lib/serie.rb

76 Instanciar Value Object junto com atributos lib/serie.rb

77 Instanciar Value Object junto com atributos lib/serie.rb

78 Instanciar Value Object junto com atributos lib/serie.rb

79 Trocar chamada do getter pela value class lib/serie.rb

80 Trocar chamada do getter pela value class lib/serie.rb

81 Trocar chamada do getter pela value class lib/serie.rb

82 Apagar atributos não utilizados lib/serie.rb

83 Apagar atributos não utilizados lib/serie.rb

84 Apagar atributos não utilizados lib/serie.rb

85 Apagar atributos não utilizados lib/serie.rb

86 Apagar atributos não utilizados lib/serie.rb

87 Apagar atributos não utilizados lib/serie.rb

88 Code Smell: Primitive Obsession

89 Code Smell: Primitive Obsession lib/serie.rb lib/cotacao_util.rb

90 Code Smell: Primitive Obsession lib/serie.rb lib/cotacao_util.rb

91 Mão na massa: introduzir Parameter Object 1. Criar uma estrutura para agrupar parâmetros (se não existir) 2. Mudar a assinatura do método a. Criar um método com mesmo corpo e nova assinatura b. Atualizar referências ao novo parâmetro 3. Chamar o método novo no método antigo 4. Atualizar as referências do métodos antigos 5. Apagar método antigo

92

93 Criar uma estrutura para agrupar parâmetros lib/dinheiro.rb

94 Mudar a assinatura do método lib/cotacao_util.rb

95 Mudar a assinatura do método lib/cotacao_util.rb

96 Mudar a assinatura do método lib/cotacao_util.rb

97 Mudar a assinatura do método lib/cotacao_util.rb

98 Mudar a assinatura do método lib/cotacao_util.rb

99 Mudar a assinatura do método lib/cotacao_util.rb

100 Atualizar as referências do método antigo lib/serie.rb

101 Atualizar as referências do método antigo lib/serie.rb

102 Apagar método antigo

103 Code Smell: Feature Envy

104 Code Smell: Feature Envy lib/serie.rb

105 Code Smell: Feature Envy lib/serie.rb

106 Code Smell: Feature Envy lib/serie.rb

107 Code Smell: Feature Envy lib/serie.rb

108 Mão na massa: mover método Identificar e extrair o método que será movido a. Copiar conteúdo para novo método b. Converter variáveis locais em parâmetro Copiar método para nova classe a. trocar parâmetros por atributos (quando possível) 3. Trocar chamadas do método antigo pelo novo método 4. Apagar métodos antigos

109

110 Identificar e extrair o método que será movido lib/serie.rb

111 Identificar e extrair o método que será movido lib/serie.rb

112 Identificar e extrair o método que será movido lib/serie.rb

113 Identificar e extrair o método que será movido lib/serie.rb

114 Copiar método para nova classe lib/dinheiro.rb

115 Copiar método para nova classe lib/dinheiro.rb

116 Copiar método para nova classe lib/dinheiro.rb

117 Trocar chamadas pelo método novo lib/serie.rb

118 Trocar chamadas pelo método novo lib/serie.rb

119 Trocar chamadas pelo método novo lib/serie.rb

120 Apagar método antigo

121 Code Smell: Feature Envy lib/serie.rb lib/cotacao_util.rb

122 Code Smell: Feature Envy lib/serie.rb lib/cotacao_util.rb

123 Code Smell: Feature Envy lib/serie.rb lib/cotacao_util.rb

124 Classes Util/Service e Orientação a Objetos

125 Objetos se comunicam através de mensagens, visando proteger e esconder seu estado interno

126 Pensando orientado a objetos Dinheiro valor: int moeda: String Estados exibir_moeda converter_moeda somar... Mensagens

127 Pensando orientado a objetos obj obj obj obj obj obj

128 Code Smell: Data Class Dinheiro valor: int moeda: String getvalor: setvalor: getmoeda: setmoeda: int void String void DinheiroService Estados Mensagens exibir_moeda converter_moeda somar...

129 Objetos anêmicos Serviços/Util Programação Procedural

130 Proragamação Procedural é ruim?

131 Usar uma linguagem OO para programar procedural é ruim!

132

133 Code Smell: Feature Envy lib/serie.rb lib/cotacao_util.rb

134 Mão na massa: mover método Identificar e extrair o método que será movido a. Copiar conteúdo para novo método b. Converter variáveis locais em parâmetro Copiar método para nova classe a. trocar parâmetros por atributos (quando possível) 3. Trocar chamadas do método antigo pelo novo método 4. Apagar métodos antigos

135

136 Identificar e extrair o método que será movido lib/serie.rb

137 Identificar e extrair o método que será movido lib/serie.rb

138 Identificar e extrair o método que será movido lib/serie.rb

139 Copiar método para nova classe lib/dinheiro.rb

140 Copiar método para nova classe lib/dinheiro.rb

141 Trocar chamadas pelo método novo lib/serie.rb

142 Trocar chamadas pelo método novo lib/serie.rb

143 Trocar chamadas pelo método novo lib/serie.rb

144 Apagar método antigo

145 Como decidir o que depende do que?

146 Quantidade de mudanças e acomplamento Probabilidade de mudanças

147 Quantidade de mudanças e acomplamento Probabilidade de mudanças Cotacao Dinheiro Extrair os valores da cotação para um arquivo de configuração

148 Quantidade de mudanças e acomplamento Probabilidade de mudanças Cotacao Dinheiro Dependa da direita para a esquerda

149

150 Como melhorar seu código efetivamente 1. Entenda como seu programa vai evoluir (Keep it Simple, Stupid) 2. Identifique os Code Smells mais fáceis de resolver 3. Aplique refatorações 4. Repita até que o código esteja aberto a extensão 5. Aplique a mudança

151 Garantir que os testes sempre passem Feedback rápido

152 Garantir que os testes sempre passem Feedback rápido Fácil de reverter

153 Garantir que os testes sempre passem Feedback rápido Fácil de reverter Reduz ansiedade

154 Code Smell -> Refactoring

155 Code Smell -> Refactoring industriallogic.com/blog/smells-to-refactorings-cheatsheet/

156 Code Smell é ruim?

157 Simplicidade de código Todos os testes passam Sem duplicac a o Mostra as intenc o es Possui o menor nu mero de classes ou me todos Extreme Programming Explained: embrace change

158 Mais! Refactoring - Martin Fowler

159 Mais! 99 Bottles of Object Oriented Programming - Sandi Metz & Katrina Owen

160 Mais! Refatorando com Padrões de Projeto - Marcos Brizeno

161 Mais! Refatorando com Padrões de Projeto - Marcos Brizeno

162 20% - DIADOPROGRAMADOR_2017X

163

164

Engenharia de Software Experimental 2013.2

Engenharia de Software Experimental 2013.2 Engenharia de Software Experimental 2013.2 Avaliação de introdução de anomalias de software, após aplicação de refatorações automáticas para remoção de code smells Chrystinne Fernandes Sumário Conceitos

Leia mais

Refatoração de Software

Refatoração de Software Refatoração de Software O que é? Atividade em que a estrutura interna de um software é modificada de modo que seu comportamento externo seja preservado; O objetivo é melhorar a qualidade do software; Cada

Leia mais

Refatoração Melhorando o sistema e preparando pra a Web

Refatoração Melhorando o sistema e preparando pra a Web POO Programação Orientada a Objetos Refatoração Melhorando o sistema e preparando pra a Web Jefferson S. Silva IFET - PI Copyright Jefferson S. Silva Slide 1 Refatoração Uma prática bastante comum e difundida

Leia mais

Refactoring Visão Geral do Catálogo de Martin Fowler

Refactoring Visão Geral do Catálogo de Martin Fowler Refactoring Visão Geral do Catálogo de Martin Fowler Jorge Fernandes Janeiro de 2001 Catálogo de Refactorings Composição de Métodos Movendo Características entre Objetos Organizando Dados Simplificando

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem

Leia mais

Modificadores de Acesso e Atributos de Classe

Modificadores de Acesso e Atributos de Classe Modificadores de Acesso e Atributos de Classe 1 Controlando o acesso p Um dos problemas mais simples que temos no nosso sistema de contas é que o método saca permite sacar mesmo que o limite tenha sido

Leia mais

Introdução à Programação Orientada a Objetos em C++

Introdução à Programação Orientada a Objetos em C++ Introdução à Programação Orientada a Objetos em C++ Disciplina de Programação Científica II Aula 12 de 18 24/05/2013 Professor Giovani Gracioli [email protected] Objetivos Os objetivos dessa aula são:

Leia mais

Estrutura de Dados Funções e Procedimentos

Estrutura de Dados Funções e Procedimentos Estrutura de Dados Funções e Procedimentos Prof. Salustiano Rodrigues de Oliveira [email protected] www.profsalu.wordpress.com Java A linguagem Java utiliza o paradigma de programação orientada

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Faculdade de Computação Aula Revisão Marcelo Zanchetta do Nascimento Material elaborado pela Profa. Ana Carolina Lorena - UNIFESP Desenvolvimento de Software ANÁLISE IMPLEMENTAÇÃO

Leia mais

Strings e Arrays POO

Strings e Arrays POO Strings e Arrays POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/27 String Uma sequência de caracteres que representa uma informação textual Em Java existe um

Leia mais

Programação Orientada a Objetos

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

Leia mais

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

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

Leia mais

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

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

Leia mais

OO - Orientação a Objetos

OO - Orientação a Objetos OO - Orientação a Objetos 1 Motivação p Orientação a objetos é uma maneira de programar que ajuda na organização e resolve muitos problemas enfrentados pela programação procedural; p Imaginem em um grande

Leia mais

Classes e Objetos. Sintaxe de classe em Java

Classes e Objetos. Sintaxe de classe em Java Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados

Leia mais

Conceitos de Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos Conceitos de Programação Orientada a Objetos Tatyana Bitencourt Com as técnicas de orientação a objeto, é possível obter resultados considerados impossíveis pensando de maneira estruturada. Como Java não

Leia mais

Princípios em refatoração. Prof. André Luiz Peron Martins Lanna

Princípios em refatoração. Prof. André Luiz Peron Martins Lanna Princípios em refatoração Prof. André Luiz Peron Martins Lanna Agenda Definição de refatoração. Por que refatorar? Quando refatorar? Problemas com refatoração. Refatoração e projeto. Refatoração e performance.

Leia mais

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

Classes o Objetos. Classes, objetos, métodos e variáveis de instância Classes o Objetos Um recurso comum de cada aplicativo feito até agora é que todas as instruções que realizavam tarefas localizavam-se no método main. Se você tornar parte de uma equipe de desenvolvimento

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 [email protected] 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

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento Professora Sheila Cáceres Variáveis locais Campos são um tipo de variável. Eles: armazenam valores por toda a vida de um objeto; e

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Modificadores de Acesso: public e private Prof. Tulio Alberton Ribeiro Instituto Federal de Santa Catarina IFSC campus São José [email protected] 31 de julho de

Leia mais

AULA 15 CONSTRUTORES. Disciplina: Programação Orientada a Objetos Professora: Alba Lopes

AULA 15 CONSTRUTORES. Disciplina: Programação Orientada a Objetos Professora: Alba Lopes AULA 15 CONSTRUTORES Disciplina: Programação Orientada a Objetos Professora: Alba Lopes [email protected] CONSTRUTORES Quando usamos a palavra chave new, estamos construindo um objeto. Sempre quando

Leia mais

Sobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga

Sobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga Algoritmos e Programação II Aula 3 Sobrecarga *Adaptado do material do Prof. Júlio Machado Sobrecarga Em várias linguagens é comum encontrarmos rotinas que fazem basicamente a mesma coisa, porém, com nomes

Leia 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

TIMTec. Introdução à programação em linguagem JAVA

TIMTec. Introdução à programação em linguagem JAVA TIMTec Introdução à programação em linguagem JAVA AULA 1 Capítulo 8 Exercício 1 Suponha você está desenvolvendo um aplicativo que precisará conhecer o conceito Bicicleta. Quais os atributos e métodos que

Leia mais

COMPORTAMENTOS - Observações

COMPORTAMENTOS - Observações COMPORTAMENTOS - Observações O próprio objeto realiza operações de consulta ou alteração dos valores dos seus atributos Essas operações são definidas em seus métodos Os métodos também são utilizados para

Leia mais

Programação Java (nível intermediário) 4. Polimorfismo

Programação Java (nível intermediário) 4. Polimorfismo Programação Java (nível intermediário) 4 Polimorfismo Introdução Uma linguagem orientada a objetos nos permite definir novos tipos para variáveis Nós definimos um novo tipo através de uma classe Este tipo

Leia mais

Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 12 Out/2016.

Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 12 Out/2016. Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 12 Out/2016 4.1.6. Propriedades Como em qualquer linguagem Java ou C++, para acessar campos privados de uma classe,

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Acessando Objetos Msc. Paulo de Tarso F. Júnior 1 Classe Classe: Radio - ligada : boolean - potencia : double + ligar() : void + desligar() : void + estaligada() : boolean

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 Editor Gráfico Vamos usar nosso framework do Motor, com pequenas mudanças (para permitir interação com

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

Linguagem de Programação C++ Se analisarmos a manipulação do objeto c, efetuada no exercício anterior, e compararmos com o que acontece em um banco

Linguagem de Programação C++ Se analisarmos a manipulação do objeto c, efetuada no exercício anterior, e compararmos com o que acontece em um banco 168 Linguagem de Programação C++ Se analisarmos a manipulação do objeto c, efetuada no exercício anterior, e compararmos com o que acontece em um banco real no momento da abertura de uma conta, perceberemos

Leia mais

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO REVISÃO POO INTRODUÇÃO À LINGUAGEM JAVA CRIANDO CLASSES EM JAVA Convenção de Nomes em Java Classes iniciam com letras maiúsculas Métodos, atributos e variáveis locais iniciam com minúsculas. Declaração

Leia mais

Laboratório de programação II

Laboratório de programação II Laboratório de programação II Paradigma de orientação a Edson Moreno [email protected] http://www.inf.pucrs.br/~emoreno Sumário Contextualização Paradigma de orientação a Contextualização A construção

Leia mais

Métodos e Procedimentos. Prof. Jesus José de Oliveira Neto

Métodos e Procedimentos. Prof. Jesus José de Oliveira Neto Métodos e Procedimentos Prof. Jesus José de Oliveira Neto Procedimentos são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. Métodos são procedimentos

Leia mais

Orientação a objetos Disciplina: Linguagens de Programação. Prof. Alexandre Cassimiro Andreani

Orientação a objetos Disciplina: Linguagens de Programação. Prof. Alexandre Cassimiro Andreani Orientação a objetos Disciplina: Linguagens de Programação Prof. Alexandre Cassimiro Andreani Sumário 1 Objetivo...3 2 Origem da programação orientada a objetos...4 2.1 Exercícios...4 3 Classes e Objetos...6

Leia mais

Conceitos de Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos Conceitos de Programação Orientada a Objetos Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 02 Conceitos de Programação Orientada a Objetos 1 Conceitos Fundamentais Classe; Ocultamento de informação;

Leia mais

Programação Orientada a Objetos Classes e Objetos. Prof. Vicente Paulo de Camargo

Programação Orientada a Objetos Classes e Objetos. Prof. Vicente Paulo de Camargo Programação Orientada a Objetos Classes e Objetos Prof. Vicente Paulo de Camargo A Programação Orientada a Objetos (POO) surgiu no final da década de 60 com a linguagem Simula-68. Os conceitos de POO foram

Leia mais

Revisão C++ - Parte 1

Revisão C++ - Parte 1 Revisão C++ - Parte 1 Prof. Gustavo Leitão Campus Natal Central Disciplina Programação para Ambiente de Redes 5/3/2010 Objetivo da Aula 5/3/2010 5/3/2010 OBJETIVO DA AULA Revisar os principais comandos

Leia mais

JAVA. Professor: Bruno Toledo

JAVA. Professor: Bruno Toledo JAVA Professor: Bruno Toledo Funcionamento de uma LP Em uma Linguagem de Programação (LP) como C e Pascal, temos o seguinte quadro quando vamos compilar um programa. Código fonte em c Teste.c Gera código

Leia mais

O PARADIGMA ORIENTADO POR OBJETOS

O PARADIGMA ORIENTADO POR OBJETOS O PARADIGMA ORIENTADO POR OBJETOS A idéia básica do paradigma orientado a objetos é imaginar que programas simulam o mundo real: um mundo povoado de objetos. Dessa maneira, linguagens baseadas nos conceitos

Leia mais

Programação Estruturada e Orientada a Objetos. Objetos e Métodos

Programação Estruturada e Orientada a Objetos. Objetos e Métodos Programação Estruturada e Orientada a Objetos Objetos e Métodos 2013 O que veremos hoje? Objetos e Métodos Transparências baseadas no material do Prof. Jailton Carlos Objetivos Aprender a criar construtores;

Leia mais

Programação Concorrente com Thread Java. Luiz Affonso Guedes Sistemas Distribuidos

Programação Concorrente com Thread Java. Luiz Affonso Guedes Sistemas Distribuidos Programação Concorrente com Thread Java Luiz Affonso Guedes Sistemas Distribuidos Definições Básicas Threads são sub-procesos no sistema operacional. É menos custoso gerenciar threads do que processos.

Leia mais

//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void

//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void //conteúdo do arquivo Matriz.h class Matriz private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void setnumerodecolunas(int); int getnumerodelinhas(); int getnumerodecolunas();

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Engenharia da Computação Professor: Rosalvo Ferreira de Oliveira Neto Dados Pessoais Rosalvo Ferreira de Oliveira Neto MSc. em ciência da computação (UFPE) [email protected]

Leia mais

Linguagens de Programação Aula 12

Linguagens de Programação Aula 12 Linguagens de Programação Aula 12 Celso Olivete Júnior [email protected] Na aula passada Implementando subprogramas 2 Na aula de hoje Suporte para a programação orientada a objetos 3 Roteiro Introdução

Leia mais

CLASSES, OBJETOS, MÉTODOS E STRING

CLASSES, OBJETOS, MÉTODOS E STRING 1 CLASSES, OBJETOS, MÉTODOS E STRING Construir software rapidamente, corretamente e economicamente é um objetivo difícil de alcançar. Objetos, ou, mais precisamente as classes de objetos, são, essencialmente,

Leia mais

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

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos Encapsulamento e Métodos (Construtores e Estáticos) Sobrecarga de Métodos João Paulo Q. dos Santos [email protected] Roteiro Conceitos sobre Encapsulamento; Variável this; Métodos Construtores;

Leia mais

Linguagem de Programação II Implementação

Linguagem de Programação II Implementação Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa

Leia mais

POO Programação Orientada a Objetos

POO Programação Orientada a Objetos POO Programação Orientada a Objetos Prof. Vicente Paulo de Camargo PUCGO O CONTEÚDO DOS SLIDES FAZ REFERÊNCIA AO MATERIAL DA APOSTILA K19-K11 E DO LIVRO JAVA USE A CABEÇA E DO LIVRO JAVA COMO PROGRAMAR

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

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

Unidade: 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 mais

POO29004 Programação Orientada a Objetos

POO29004 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é [email protected] http://docente.ifsc.edu.br/mello/poo

Leia mais

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores Prof.: Bruno E. G. Gomes IFRN 1 Introdução Na aula de hoje: Declaração de classes Métodos Construtores Exercícios de criação

Leia mais

Unidade: Introdução à POO (Programação Orientada a Objetos)

Unidade: Introdução à POO (Programação Orientada a Objetos) Unidade: Introdução à POO (Programação Orientada a Objetos) 0 Unidade: Introdução à POO (Programação Orientada a Objetos) Paradigmas de Programação Um paradigma de programação fornece (e determina) a visão

Leia mais

Complexidade do Software

Complexidade do Software Complexidade do Software Sistemas de software são complicados Os requisitos modernos tendem a complicálo cada vez mais: Alta confiabilidade; Alto desempenho; Desenvolvimento rápido e barato Precisamos

Leia mais

Refatoração: uma introdução. Prof. André Luiz Peron Martins Lanna

Refatoração: uma introdução. Prof. André Luiz Peron Martins Lanna Refatoração: uma introdução Prof. André Luiz Peron Martins Lanna Agenda Introdução Idéias preliminares Um primeiro exemplo Conclusões Bibliografia Introdução Em DSW o assunto principal foi o Projeto de

Leia mais

Rafael B. Pereira (http://www.rbper.com)

Rafael B. Pereira (http://www.rbper.com) Nesse caso a cláusula this() serve para chamar o construtor da própria classe. Agora vamos supor que fosse desejado chamar um construtor da classe pai. Como isso poderia ser feito? Bastaria usar a cláusula

Leia mais

Linguagem C: Introdução

Linguagem C: Introdução Linguagem C: Introdução Linguagem C É uma Linguagem de programação genérica que é utilizada para a criação de programas diversos como: Processadores de texto Planilhas eletrônicas Sistemas operacionais

Leia mais

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga Professora Sheila Cáceres Sobrecarga (overloading) Na mesma classe podemos definir vários métodos com o mesmo nome Sobrecarga O tipo

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

Tecnólogo em Análise e Desenvolvimento de Sistemas

Tecnólogo em Análise e Desenvolvimento de Sistemas Tecnólogo em Análise e Desenvolvimento de Sistemas 2017-2 Disciplina: Linguagem de Programação III - Objetivos Aplicação da Programação Orientada a Objeto na construção de sistemas computacionais Conteúdo

Leia mais

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos Câmpus Santa Helena Curso: Ciência da Computação Disciplina: Programação Orientada a Objetos AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos Tema

Leia mais

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos) Mecanismos de controlo de acesso Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a cada classe e cada membro da classe (dados e métodos) Modificadores de acesso: public protected private

Leia mais

Encapsulamento. Alberto Costa Neto DComp - UFS

Encapsulamento. Alberto Costa Neto DComp - UFS Encapsulamento Alberto Costa Neto DComp - UFS 1 Motivação O que aprendemos até agora? O que diferencia a POO da Programação Imperativa? Estas informações são suficientes para construir um projeto OO eficiente?

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Curso Profissional de Gestão e Programação de Sistemas Informáticos Disciplina: Programação e Sistemas de Informação Programação Orientada a Objetos Módulos 9/10/11 POO 2016/2017 História A OO surgiu no

Leia mais

[Linguagem de Programação 3] [Aula 01] [Gustavo Yoshio Maruyama]

[Linguagem de Programação 3] [Aula 01] [Gustavo Yoshio Maruyama] [Linguagem de Programação 3] [Aula 01] [Gustavo Yoshio Maruyama] Objetivos Revisar conceitos de Orientação a Objetos Classes Objetos Encapsulamento Herança Sobrescrita de métodos Sobrecarga de métodos

Leia mais

Programação Orientada a Objetos. Encapsulamento

Programação Orientada a Objetos. Encapsulamento Programação Orientada a Objetos Encapsulamento Cristiano Lehrer, M.Sc. Introdução (1/2) Os três pilares da programação orientada a objetos são: Encapsulamento Herança Polimorfismo Encapsulamento é a característica

Leia mais

Unidade: sobrecarga, construtores e herança

Unidade: sobrecarga, construtores e herança Unidade: sobrecarga, construtores e herança 0 Unidade: sobrecarga, construtores e herança Sobrecarga Sobrecarregar (do inglês overload) um método é criar mais métodos com o mesmo nome, porém com assinaturas

Leia mais

Padrões para atribuir responsabilidades: Baixo Acoplamento

Padrões para atribuir responsabilidades: Baixo Acoplamento Problema Padrão para atribuir responsabilidades: Baixo Acoplamento Como minimizar dependências e maximizar o reuso? O acoplamento é uma medida de quão fortemente uma classe está conectada, possui conhecimento

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

Orientação a Objetos e UML

Orientação a Objetos e UML Orientação a Objetos e UML Aula #4.1. EBS 211 POO e UML Prof. Luiz Fernando S. Coletta [email protected] Campus de Tupã Roteiro Programação Orientada a Objetos (POO); Comparação com Linguagem Estruturada;

Leia mais

Java 2 Standard Edition Tipos, literais, operadores e controle de fluxo

Java 2 Standard Edition Tipos, literais, operadores e controle de fluxo Java 2 Standard Edition Tipos, literais, operadores e controle de fluxo Helder da Rocha www.argonavis.com.br 1 Operadores e controle de fluxo da execução Este módulo explora as estruturas procedurais da

Leia mais

Requisitos de sistemas

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

Leia mais