Refatorando
|
|
|
- Denílson Laranjeira Ribas
- 7 Há anos
- Visualizações:
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 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
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
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
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
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
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
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:
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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,
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
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
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
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
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
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
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
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
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;
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
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
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
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
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;
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.
//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();
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]
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
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,
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;
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
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
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
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,
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
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
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
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
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
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
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
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
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
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
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
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
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?
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
[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
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
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
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
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
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;
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
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
