ATRIBUTOS E MÉTODOS DE CLASSE
|
|
|
- Izabel Araújo Lencastre
- 9 Há anos
- Visualizações:
Transcrição
1 ATRIBUTOS E MÉTODOS DE CLASSE C A P Í T U L O 5 Atributos Estáticos Num sistema bancário, provavelmente, criaríamos uma classe para especificar os objetos que representariam os funcionários do banco. 1 class Funcionario { 2 String nome; double salario; 4 5 void aumentasalario( double aumento) { 6 this.salario += aumento; 8 } Código Java 5.1: Funcionario.java Suponha que o banco paga aos seus funcionários um valor padrão de vale refeição por dia trabalhado. O sistema do banco precisa guardar esse valor. Poderíamos definir um atributo na classe Funcionario para tal propósito. 1 class Funcionario { 2 String nome; double salario; 4 double valerefeicaodiario; 5 6 void aumentasalario( double aumento) { 7 this.salario += aumento; 8 } 9 } Código Java 5.2: Funcionario.java O atributo valerefeicaodiario é de instância, ou seja, cada objeto criado a partir da classe Funcionario teria o seu próprio atributo valerefeicaodiario. Porém, não faz sentido ter esse valor repetido em todos os objetos, já que ele é único para todos os funcionários. FUNCIONARIO nome = Rafael Cosentino valerefeicaodiario = 15 FUNCIONARIO nome = Jonas Hirata valerefeicaodiario = 15 FUNCIONARIO nome = Marcelo Martins valerefeicaodiario = 15 Figura 5.1: Atributos de instância Para que o atributo valerefeicaodiario não se repita em cada objeto da classe Funcionario, 69
2 ATRIBUTOS E MÉTODOS DE CLASSE 70 devemos torná-lo um atributo de classe ao invés de um atributo de instância. Para isso, devemos aplicar o modificador static na declaração do atributo. 1 class Funcionario { 2 String nome; double salario; 4 static double valerefeicaodiario; 5 6 void aumentasalario( double aumento) { 7 this.salario += aumento; 8 } 9 } Código Java 5.: Funcionario.java Um atributo de classe deve ser acessado através do nome da classe na qual ele foi definido. 1 Funcionario. valerefeicaodiario = 15; Código Java 5.4: Acessando um atributo de classe Podemos acessar um atributo de classe através de uma referência de um objeto da classe na qual o atributo foi definido. Contudo, não seria a maneira conceitualmente correta já que o atributo pertence a classe e não ao objeto. 1 Funcionario f = new Funcionario(); 2 // Válido, mas conceitualmente incorreto f. valerefeicaodiario = 15; Código Java 5.5: Acessando um atributo de classe valerefeicaodiario = 15 FUNCIONARIO nome = Rafael Cosentino FUNCIONARIO nome = Jonas Hirata FUNCIONARIO nome = Marcelo Martins Figura 5.2: Atributos de classe Métodos Estáticos Definimos métodos para implementar as lógicas que manipulam os valores dos atributos de instância. Podemos fazer o mesmo para os atributos de classe. Suponha que o banco tenha um procedimento para reajustar o valor do vale refeição baseado em uma taxa. Poderíamos definir um método na classefuncionario para implementar esse reajuste. 1 void reajustavalerefeicaodiario( double taxa) { 2 Funcionario. valerefeicaodiario += Funcionario. valerefeicaodiario * taxa; 70
3 71 ATRIBUTOS E MÉTODOS DE CLASSE } Código Java 5.6: Método que reajusta o valor do vale refeição O método reajustavalerefeicaodiario() é de instância. Consequentemente, ele deve ser chamado a partir da referência de um objeto da classefuncionario. Contudo, como o reajuste do valor do vale refeição não depende dos dados de um funcionário em particular, não faz sentido precisar de uma referência de um objeto da classe Funcionario para poder fazer esse reajuste. Neste caso, poderíamos definir o reajustavalerefeicaodiario() como método de classe ao invés de método de instância. Aplicando o modificador static nesse método, ele se tornará um método de classe. Dessa forma, o reajuste poderia ser executado independentemente da existência de objetos da classefuncionario. 1 static void reajustavalerefeicaodiario( double taxa) { 2 Funcionario. valerefeicaodiario += Funcionario. valerefeicaodiario * taxa; } Código Java 5.7: Método que reajusta o valor do vale refeição Um método de classe deve ser chamado através do nome da classe na qual ele foi definido. 1 Funcionario. reajustavalerefeicaodiario(0.1); Código Java 5.8: Chamando um método de classe Podemos chamar um método de classe através de uma referência de um objeto da classe na qual o método foi definido. Contudo, não seria a maneira conceitualmente correta já que o método pertence a classe e não ao objeto. 1 Funcionario f = new Funcionario(); 2 // Válido, mas conceitualmente incorreto f. reajustavalerefeicaodiario(0.1); Código Java 5.9: Chamando um método de classe Exercícios de Fixação 1 Para não confundir, feche o projeto Arrays clicando com o botão direito do mouse sobre esse projeto e selecionando a opção Close Project. Em seguida, crie um novo projeto para os exercícios desse capítulo. Digite CTRL + e pesquise por Create a Java project. Selecione a opção correspondente e siga a imagem abaixo. 71
4 ATRIBUTOS E MÉTODOS DE CLASSE 72 2 Crie uma classe chamada Conta no projeto Static. Defina um atributo para contabilizar o número de objetos instanciados a partir da classeconta. Esse atributo deve ser incrementado toda vez que um objeto é criado. Utilize um construtor para fazer esse incremento. 1 public class Conta { 2 int contador; 4 Conta() { 5 this. contador ++; 6 } Código Java 5.10: Conta.java Faça um teste criando dois objetos da classe Conta. Exiba o valor do atributo contador depois da criação de cada objeto. Crie uma classe chamada TestaContador com o seguinte conteúdo. 1 public class TestaContador { 72
5 7 ATRIBUTOS E MÉTODOS DE CLASSE 2 public static void main(string[] args) { Conta c1 = new Conta(); 4 5 System.out.println("Contador: " + c1.contador); 6 7 Conta c2 = new Conta(); 8 9 System.out.println("Contador: " + c2.contador); 10 } 11 } Código Java 5.11: TestaContador.java Execute a classetestacontador e observe que o valor 1 é exibido duas vezes. 4 Altere a classe Conta. O atributo contador deve ser um atributo de classe. Então, adicione o modificador static nesse atributo. Além disso, no construtor, acesse o atributo contador com o nome da classe e não com a variável this. 1 public class Conta { 2 static int contador; 4 Conta() { 5 Conta. contador ++; 6 } Código Java 5.12: Conta.java 5 Altere a classe TestaContador. Acesse o atributo contador através do nome da classe e não através das variáveis locais que armazenam referências de objetos do tipo Conta. Além disso, exiba o valor do atributocontador antes dos objetos da classeconta serem criados. 1 public class TestaContador { 2 public static void main(string[] args) { System.out.println("Contador: " + Conta.contador); 4 5 Conta c1 = new Conta(); 6 7 System.out.println("Contador: " + Conta.contador); 8 9 Conta c2 = new Conta(); System.out.println("Contador: " + Conta.contador); 12 } 1 } Código Java 5.1: TestaContador.java Execute a classetestacontador e observe que o valor do contador está correto. 6 O contador de contas pode ser utilizado para gerar um número único para cada conta. Acrescente na classeconta um atributo de instância para guardar os números das contas. Implemente no construtor a lógica para gerar esses números de forma única através do contador de contas. 1 public class Conta { 2 static int contador; 7
6 ATRIBUTOS E MÉTODOS DE CLASSE 74 4 int numero; 5 6 Conta() { 7 Conta. contador ++; 8 this.numero = Conta.contador; 9 } 10 } Código Java 5.14: Conta.java 7 Altere a classetestacontador. Exiba no Console os números das contas. 1 public class TestaContador { 2 public static void main(string[] args) { System.out.println("Contador: " + Conta.contador); 4 5 Conta c1 = new Conta(); 6 System.out.println("Numero da primeira conta: " + c1.numero); 7 8 System.out.println("Contador: " + Conta.contador); 9 10 Conta c2 = new Conta(); 11 System.out.println("Numero da segunda conta: " + c2.numero); 12 1 System.out.println("Contador: " + Conta.contador); 14 } 15 } Código Java 5.15: TestaContador.java Execute a classetestacontador. 8 Adicione um método de classe na classeconta para zerar o contador e exibir o total de contas anterior. 1 static void zeracontador() { 2 System.out.println("Valor atual do contador: " + Conta.contador); System.out.println("Zerando o contador de contas..."); 4 Conta.contador = 0; 5 } Código Java 5.16: Método zeracontador() 9 Altere a classetestacontador. Utilize o métodozeracontador(). 1 public class TestaContador { 2 public static void main(string[] args) { System.out.println("Contador: " + Conta.contador); 4 5 Conta c1 = new Conta(); 6 System.out.println("Numero da primeira conta: " + c1.numero); 7 8 System.out.println("Contador: " + Conta.contador); 9 10 Conta c2 = new Conta(); 11 System.out.println("Numero da segunda conta: " + c2.numero); 12 1 System.out.println("Contador: " + Conta.contador); Conta. zeracontador(); 74
7 75 ATRIBUTOS E MÉTODOS DE CLASSE 16 } 1 Código Java 5.17: TestaContador.java Execute a classetestacontador. Exercícios Complementares 1 Crie uma classe chamada Funcionario para modelar os funcionários do banco. Considere que esses funcionários possuem nome e salário. Defina nessa classe um atributo para armazenar o valor do vale refeição diário pago aos funcionários. Considere que esse valor é igual para todos os funcionários. 2 Faça um teste para verificar o funcionamento do atributo que armazena o valor do vale refeição dos funcionários. Altere e exiba no Console o valor desse atributo. Crie uma classe chamada TestaValeRefeicao. Defina um método de classe na classefuncionario para reajustar o vale refeição diário a partir de uma taxa. 4 Teste o método criado no exercício anterior alterando a classetestavalerefeicao. 75
8 ATRIBUTOS E MÉTODOS DE CLASSE
9 ENCAPSULAMENTO C A P Í T U L O 6 Atributos Privados No sistema do banco, cada objeto da classe Funcionario possui um atributo para guardar o salário do funcionário que ele representa. 1 class Funcionario { 2 double salario; } Código Java 6.1: Funcionario.java O atributosalario pode ser acessado ou modificado por código escrito em qualquer classe que esteja no mesmo diretório que a classe Funcionario. Portanto, o controle desse atributo é descentralizado. Para identificar algum erro relacionado a manipulação dos salários dos funcionários, é necessário verificar o código de todos os arquivos da pasta onde a classefuncionario está definida. Quanto maior o número de arquivos, menos eficiente será a manutenção da aplicação. Podemos obter um controle centralizado tornando o atributo salario privado e definindo métodos para implementar todas as lógicas que utilizam ou modificam o valor desse atributo. 1 class Funcionario { 2 private double salario; 4 void aumentasalario( double aumento) { 5 // lógica para aumentar o salário 6 } Código Java 6.2: Funcionario.java Um atributo privado só pode ser acessado ou alterado por código escrito dentro da classe na qual ele foi definido. Se algum código fora da classefuncionario tentar acessar ou alterar o valor do atributo privadosalario, um erro de compilação será gerado. Definir todos os atributos como privado e métodos para implementar as lógicas de acesso e alteração é quase uma regra da orientação a objetos. O intuito é ter sempre um controle centralizado do dados dos objetos para facilitar a manutenção do sistema e a detecção de erros. Métodos Privados 77
10 ENCAPSULAMENTO 78 O papel de alguns métodos pode ser o de auxiliar outros métodos da mesma classe. E muitas vezes, não é correto chamar esses métodos auxiliares de fora da sua classe diretamente. No exemplo abaixo, o método descontatarifa() é um método auxiliar dos métodos deposita() e saca(). Além disso, ele não deve ser chamado diretamente, pois a tarifa só deve ser descontada quando ocorre um depósito ou um saque. 1 class Conta { 2 private double saldo; 4 void deposita(double valor) { 5 this.saldo += valor; 6 this. descontatarifa(); 8 9 void saca(double valor) { 10 this.saldo -= valor; 11 this. descontatarifa(); 12 } 1 14 void descontatarifa() { 15 this.saldo -= 0.1; 16 } 1 Código Java 6.: Conta.java Para garantir que métodos auxiliares não sejam chamados por código escrito fora da classe na qual eles foram definidos, podemos torná-los privados, acrescentando o modificadorprivate. 1 private void descontatarifa() { 2 this.saldo -= 0.1; } Código Java 6.4: Método privado descontatarifa() Qualquer chamada ao método descontatarifa() realizada fora da classe Conta gera um erro de compilação. Métodos Públicos Os métodos que devem ser chamados a partir de qualquer parte do sistema devem possuir o modificador de visibilidadepublic. 1 class Conta { 2 private double saldo; 4 public void deposita(double valor) { 5 this.saldo += valor; 6 this. descontatarifa(); 8 9 public void saca(double valor) { 10 this.saldo -= valor; 11 this. descontatarifa(); 12 } 1 14 private descontatarifa(){ 15 this.saldo -= 0.1; 16 } 78
11 79 ENCAPSULAMENTO 1 Código Java 6.5: Conta.java Implementação e Interface de Uso Dentro de um sistema orientado a objetos, cada objeto realiza um conjunto de tarefas de acordo com as suas responsabilidades. Por exemplo, os objetos da classe Conta realizam as operações de saque, depósito, transferência e geração de extrato. Para descobrir o que um objeto pode fazer, basta olhar para as assinaturas dos métodos públicos definidos na classe desse objeto. A assinatura de um método é composta pelo seu nome e seus parâmetros. As assinaturas dos métodos públicos de um objeto formam a sua interface de uso. Por outro lado, para descobrir como um objeto da classe Conta realiza as suas operações, devemos observar o corpo de cada um dos métodos dessa classe. Os corpos dos métodos constituem a implementação das operações dos objetos. Por quê encapsular? Uma das ideias mais importantes da orientação a objetos é o encapsulamento. Encapsular significa esconder a implementação dos objetos. O encapsulamento favorece principalmente dois aspectos de um sistema: a manutenção e o desenvolvimento. A manutenção é favorecida pois, uma vez aplicado o encapsulamento, quando o funcionamento de um objeto deve ser alterado, em geral, basta modificar a classe do mesmo. O desenvolvimento é favorecido pois, uma vez aplicado o encapsulamento, conseguimos determinar precisamente as responsabilidades de cada classe da aplicação. O conceito de encapsulamento pode ser identificado em diversos exemplos do cotidiano. Mostraremos alguns desses exemplos para esclarecer melhor a ideia. Celular - Escondendo a complexidade Hoje em dia, as pessoas estão acostumadas com os celulares. Os botões, a tela e os menus de um celular formam a interface de uso do mesmo. Em outras palavras, o usuário interage com esses aparelhos através dos botões, da tela e dos menus. Os dispositivos internos de um celular e os processos que transformam o som capturado pelo microfone em ondas que podem ser transmitidas para uma antena da operadora de telefonia móvel constituem a implementação do celular. Do ponto de vista do usuário de um celular, para fazer uma ligação, basta digitar o número do telefone desejado e clicar no botão que efetua a ligação. Porém, diversos processos complexos são realizados pelo aparelho para que as pessoas possam conversar através dele. Se os usuários tivessem que possuir conhecimento de todo o funcionamento interno dos celulares, certamente a maioria das pessoas não os utilizariam. 79
12 E NCAPSULAMENTO 80 No contexto da orientação a objetos, aplicamos o encapsulamento para criar objetos mais simples de serem utilizados em qualquer parte do sistema. Calling Maria Figura 6.1: Celular Carro - Evitando efeitos colateiras A interface de uso de um carro é composta pelos dispositivos que permitem que o motorista conduza o veículo (volante, pedais, alavanca do câmbio, etc). A implementação do carro é composta pelos dispositivos internos (motor, caixa de câmbio, radiador, sistema de injeção eletrônica ou carburador, etc) e pelos processos realizados internamente por esses dispositivos. Nos carros mais antigos, o dispositivo interno que leva o combustível para o motor é o carburador. Nos carros mais novos, o carburador foi substituído pelo sistema de injeção eletrônica. Inclusive, algumas oficinas especializadas substituem o carburador pelo sistema de injeção eletrônica. Essa alteração na implementação do carro não afeta a maneira que o motorista dirige. Todo mundo que sabe dirigir um carro com carburador também sabe dirigir um carro com injeção eletrônica. Hoje em dia, as montadoras fabricam veículos com câmbio mecânico ou automático. O motorista acostumado a dirigir carros com câmbio mecânico pode ter dificuldade para dirigir carros com câmbio automático e vice-versa. Quando a interface de uso do carro é alterada, a maneira de dirigir é afetada, fazendo com que as pessoas que sabem dirigir tenham que se adaptar. No contexto da orientação a objetos, aplicando o conceito do encapsulamento, as implementações dos objetos ficam escondidas. Dessa forma, podemos modificá-las sem afetar a maneira de utilizar esses objetos. Por outro lado, se alterarmos a interface de uso que está exposta, afetaremos a maneira de usar os objetos. Considere, por exemplo, a mudança do nome de um método público. Todas as chamadas a esse método devem ser alteradas, o que pode causar diversos efeitos colaterais nas classes da aplicação. 80
13 81 E NCAPSULAMENTO = 12:0 = 12:0 Figura 6.2: Substituição de um volante por um joystick Máquinas de Porcarias - Aumentando o controle Estamos acostumados a utilizar máquinas de refrigerantes, de salgadinhos, de doces, de café, etc. Em geral, essas máquinas oferecem uma interface de uso composta por: Entradas para moedas ou cédulas. Botões para escolher o produto desejado. Saída do produto. Saída para o troco. Normalmente, essas máquinas são extremamente protegidas. Elas garantem que nenhum usuário mal intencionado (ou não) tente alterar a implementação da máquina, ou seja, tente alterar como a máquina funciona por dentro. Levando essa ideia para um sistema orientado a objetos, um objeto deve ser bem protegido para que outros objetos não prejudiquem o seu funcionamento interno. Figura 6.: Máquina de Porcarias Acessando ou modificando atributos 81
14 ENCAPSULAMENTO 82 Aplicando a ideia do encapsulamento, os atributos deveriam ser todos privados. Consequentemente, os atributos não podem ser acessados ou modificados por código escrito fora da classe na qual eles foram definidos. Porém, muitas vezes, as informações armazenadas nos atributos precisam ser consultadas de qualquer lugar do sistema. Nesse caso, podemos disponibilizar métodos para consultar os valores dos atributos. 1 class Cliente { 2 private String nome; 4 public String consultanome() { 5 return this.nome; 6 } Código Java 6.6: Cliente.java Da mesma forma, eventualmente, é necessário modificar o valor de um atributo a partir de qualquer lugar do sistema. Nesse caso, também poderíamos criar um método para essa tarefa. 1 class Cliente { 2 private String nome; 4 public void alteranome( String nome){ 5 this.nome = nome; 6 } Código Java 6.7: Cliente.java Muitas vezes, é necessário consultar e alterar o valor de um atributo a partir de qualquer lugar do sistema. Nessa situação, podemos definir os dois métodos discutidos anteriormente. Mas, o que é melhor? Criar os dois métodos (um de leitura e outro de escrita) ou deixar o atributo público? Quando queremos consultar a quantidade de combustível de um automóvel, olhamos o painel ou abrimos o tanque de combustível? Quando queremos alterar o toque da campainha de um celular, utilizamos os menus do celular ou desmontamos o aparelho? Acessar ou modificar as propriedades de um objeto manipulando diretamente os seus atributos é uma abordagem que normalmente gera problemas. Por isso, é mais seguro para a integridade dos objetos e, consequentemente, para a integridade da aplicação, que esse acesso ou essa modificação sejas realizados através de métodos do objeto. Utilizando métodos, podemos controlar como as alterações e as consultas são realizadas. Ou seja, temos um controle maior. Getters e Setters Na linguagem Java, há uma convenção de nomenclatura para os métodos que têm como finalidade acessar ou alterar as propriedades de um objeto. 82
15 8 ENCAPSULAMENTO Segundo essa convenção, os nomes dos métodos que permitem a consulta das propriedades de um objeto devem possuir o prefixo get. Analogamente, os nomes dos métodos que permitem a alteração das propriedades de um objeto devem possuir o prefixo set. Na maioria dos casos, é muito conveniente seguir essa convenção, pois os desenvolvedores Java já estão acostumados com essas regras de nomenclatura e o funcionamento de muitas bibliotecas do Java depende fortemente desse padrão. 1 class Cliente { 2 private String nome; 4 public String getnome() { 5 return this.nome; 6 } 7 8 public void setnome(string nome) { 9 this.nome = nome; 10 } 11 } Código Java 6.8: Cliente.java Exercícios de Fixação 1 Para não confundir, feche o projeto Static clicando com o botão direito do mouse sobre esse projeto e selecionando a opção Close Project. Em seguida, crie um novo projeto para os exercícios desse capítulo. Digite CTRL + e pesquise por Create a Java project. Selecione a opção correspondente e siga a imagem abaixo. 8
16 ENCAPSULAMENTO 84 2 Defina uma classe chamada Funcionario para representar os funcionários de um banco com um atributo para guardar os salários e outro para os nomes. 1 public class Funcionario { 2 double salario; String nome; 4 } Código Java 6.9: Funcionario.java Crie um objeto da classe Funcionario. Altere e exiba os valores dos atribtuos desse objeto. Adicione uma classe chamada Teste no projeto Encapsulamento. 1 public class Teste { 2 public static void main(string[] args) { Funcionario f = new Funcionario(); 4 5 f.nome = "Rafael Cosentino"; 84
17 85 ENCAPSULAMENTO 6 f. salario = 2000; 7 8 System.out.println("Nome: " + f.nome); 9 System.out.println("Salário: " + f.salario); 10 } 11 } Código Java 6.10: Teste.java Execute a classe Teste. Observe que essa classe pode acessar e modificar os atributos do objeto criado com a classefuncionario. 4 Aplique a ideia do encapsulamento tornando os atributos definidos na classefuncionario privados. 1 public class Funcionario { 2 private double salario; private String nome; 4 } Código Java 6.11: Funcionario.java 5 Observe os erros de compilação na classe Teste. Agora, essa classe não pode mais acessar ou modificar os atributos do objeto criado com a classefuncionario. 6 Crie métodos de acesso com nomes padronizados para os atributos definidos na classe Funcionario. 1 public class Funcionario { 2 private double salario; private String nome; 4 5 public double getsalario() { 6 return this.salario; 8 9 public String getnome() { 10 return this.nome; 11 } 12 1 public void setsalario( double salario) { 14 this.salario = salario; 15 } public void setnome(string nome) { 18 this.nome = nome; 19 } 20 } Código Java 6.12: Funcionario.java 7 Altere a classeteste para que ela utilize os métodos de acesso ao invés de manipular os atributos do objeto da classe Funcionario diretamente. Dica: Com o cursor de digitação sobre o primeiro erro de compilação digite CTRL + 1 e selecione a opção Replace f.nome with setter. Analogamente, o mesmo processo pode ser utilizado para resolver os outros três erros de compilação. 85
18 ENCAPSULAMENTO 86 1 public class Teste { 2 public static void main(string[] args) { Funcionario f = new Funcionario(); 4 5 f. setnome(" Rafael Cosentino"); 6 f. setsalario(2000); 7 8 System.out.println("Nome: " + f.getnome()); 9 System.out.println("Salário: " + f.getsalario()); 10 } 11 } Código Java 6.1: Teste.java 8 Remova os métodos de acesso da classefuncionario. 1 public class Funcionario { 2 private double salario; private String nome; 4 } Código Java 6.14: Funcionario.java 9 Gere os getters e setters com os recursos do Eclipse. Digite get ou set seguidos de CTRL + ESPAÇO para completar o código. Figura 6.4: Gerando os getters e setters Outra possibilidade é digitar CTRL + e pesquisar por generate getters and setters ou simplesmente ggas. 86
19 87 ENCAPSULAMENTO Figura 6.5: Gerando os getters e setters Exercícios Complementares 1 Implemente uma classe chamada Conta para modelar as contas de um banco. Considere que toda conta possui número, saldo e limite. 2 Adicione métodos de acesso com nomes padronizados para os atributos da classeconta. Crie objetos da classe Conta e utilize os métodos de acesso para alterar os valores dos atributos. 4 Utilize os mecanismos do Eclipse para gerar novamente os métodos de acesso. 87
20 ENCAPSULAMENTO
21 HERANÇA C A P Í T U L O 7 Reutilização de Código Um banco oferece diversos serviços que podem ser contratados individualmente pelos clientes. Quando um serviço é contratado, o sistema do banco deve registrar quem foi o cliente que contratou o serviço, quem foi o funcionário responsável pelo atendimento ao cliente e a data de contratação. Com o intuito de ser produtivo, a modelagem dos serviços do banco deve diminuir a repetição de código. A ideia é reaproveitar o máximo do código já criado. Essa ideia está diretamente relacionada ao conceito Don t Repeat Yourself. Em outras palavras, devemos minimizar ao máximo a utilização do copiar e colar. O aumento da produtividade e a diminuição do custo de manutenção são as principais motivações do DRY. Em seguida, vamos discutir algumas modelagens possíveis para os serviços do banco. Buscaremos seguir a ideia do DRY na criação dessas modelagens. Uma classe para todos os serviços Poderíamos definir apenas uma classe para modelar todos os tipos de serviços que o banco oferece. 1 class Servico { 2 private Cliente contratante; private Funcionario responsavel; 4 private String datadecontratacao; 5 6 // métodos Código Java 7.1: Servico.java Empréstimo O empréstimo é um dos serviços que o banco oferece. Quando um cliente contrata esse serviço, são definidos o valor e a taxa de juros mensal do empréstimo. Devemos acrescentar dois atributos na classeservico: um para o valor e outro para a taxa de juros do serviço de empréstimo. 1 class Servico { 2 // GERAL private Cliente contratante; 4 private Funcionario responsavel; 5 private String datadecontratacao; 6 7 // EMPRÉSTIMO 8 private double valor; 89
22 HERANÇA 90 9 private double taxa; // métodos 12 } Código Java 7.2: Servico.java Seguro de veículos Outro serviço oferecido pelo banco é o seguro de veículos. Para esse serviço devem ser definidas as seguintes informações: veículo segurado, valor do seguro e a franquia. Devemos adicionar três atributos na classeservico. 1 class Servico { 2 // GERAL private Cliente contratante; 4 private Funcionario responsavel; 5 private String datadecontratacao; 6 7 // EMPRÉSTIMO 8 private double valor; 9 private double taxa; // SEGURO DE VEICULO 12 private Veiculo veiculo; 1 private double valordosegurodeveiculo; 14 private double franquia; // métodos 1 Código Java 7.: Servico.java Apesar de seguir a ideia do DRY, modelar todos os serviços com apenas uma classe pode dificultar o desenvolvimento. Supondo que dois ou mais desenvolvedores são responsáveis pela implementação dos serviços, eles provavelmente modificariam a mesma classe concorrentemente. Além disso, os desenvolvedores, principalmente os recém chegados no projeto do banco, ficariam confusos com o código extenso da classeservico. Outro problema é que um objeto da classe Servico possui atributos para todos os serviços que o banco oferece. Na verdade, ele deveria possuir apenas os atributos relacionados a um serviço. Do ponto de vista de performance, essa abordagem causaria um consumo desnecessário de memória. Uma classe para cada serviço Para modelar melhor os serviços, evitando uma quantidade grande de atributos e métodos desnecessários, criaremos uma classe para cada serviço. 1 class SeguroDeVeiculo { 2 // GERAL private Cliente contratante; 4 private Funcionario responsavel; 5 private String datadecontratacao; 6 7 // SEGURO DE VEICULO 8 private Veiculo veiculo; 9 private double valordosegurodeveiculo; 10 private double franquia; 90
23 91 HERANÇA // métodos 1 } Código Java 7.4: SeguroDeVeiculo.java 1 class Emprestimo { 2 // GERAL private Cliente contratante; 4 private Funcionario responsavel; 5 private String datadecontratacao; 6 7 // EMPRÉSTIMO 8 private double valor; 9 private double taxa; // métodos 12 } Código Java 7.5: Emprestimo.java Criar uma classe para cada serviço torna o sistema mais flexível, pois qualquer alteração em um determinado serviço não causará efeitos colaterais nos outros. Mas, por outro lado, essas classes teriam bastante código repetido, contrariando a ideia do DRY. Além disso, qualquer alteração que deva ser realizada em todos os serviços precisa ser implementada em cada uma das classes. Uma classe genérica e várias específicas Na modelagem dos serviços do banco, podemos aplicar um conceito de orientação a objetos chamado Herança. A ideia é reutilizar o código de uma determinada classe em outras classes. Aplicando herança, teríamos a classeservico com os atributos e métodos que todos os serviços devem ter e uma classe para cada serviço com os atributos e métodos específicos do determinado serviço. As classes específicas seriam ligadas de alguma forma à classeservico para reaproveitar o código nela definido. Esse relacionamento entre as classes é representado em UML pelo diagrama abaixo. 91
24 HERANÇA 92 Figura 7.1: Árvore de herança dos serviços Os objetos das classes específicasemprestimo esegurodeveiculo possuiriam tanto os atributos e métodos definidos nessas classes quanto os definidos na classeservico. 1 Emprestimo e = new Emprestimo(); 2 // Chamando um método da classe Servico 4 e. setdatadecontratacao(" 10/10/2010"); 5 6 // Chamando um método da classe Emprestimo 7 e.setvalor(10000); Código Java 7.6: Chamando métodos da classe genérica e da específica As classes específicas são vinculadas a classe genérica utilizando o comando extends. Não é necessário redefinir o conteúdo já declarado na classe genérica. 1 class Servico { 2 private Cliente contratante; private Funcionario responsavel; 4 private String datadecontratacao; 5 } Código Java 7.7: Servico.java 1 class Emprestimo extends Servico { 2 private double valor; private double taxa; 4 } Código Java 7.8: Emprestimo.java 1 class SeguroDeVeiculo extends Servico { 2 private Veiculo veiculo; private double valordosegurodeveiculo; 4 private double franquia; 5 } Código Java 7.9: SeguroDeVeiculo.java 92
25 9 HERANÇA A classe genérica é denominada super classe, classe base ou classe mãe. As classes específicas são denominadas sub classes, classes derivadas ou classes filhas. Quando o operadornew é aplicado em uma sub classe, o objeto construído possuirá os atributos e métodos definidos na sub classe e na super classe. EMPRESTIMO new Emprestimo() valor taxa SERVICO contratante responsavel datadecontratacao Figura 7.2: Criando um objeto a partir da sub classe Preço Fixo Suponha que todo serviço do banco possui uma taxa administrativa que deve ser paga pelo cliente que contratar o serviço. Inicialmente, vamos considerar que o valor dessa taxa é igual para todos os serviços do banco. Neste caso, poderíamos implementar um método na classe Servico para calcular o valor da taxa. Este método será reaproveitado por todas as classes que herdam da classeservico. 1 class Servico { 2 // ATRIBUTOS 4 public double calculataxa() { 5 return 10; 6 } Código Java 7.10: Servico.java 1 Emprestimo e = new Emprestimo(); 2 SeguroDeVeiculo sdv = new SeguroDeVeiculo(); 4 5 System.out.println("Emprestimo: " + e.calculataxa()); 6 7 System.out.println("SeguroDeVeiculo: " + sdv.calculataxa()); Código Java 7.11: Chamando o método calculataxa() Reescrita de Método Suponha que o valor da taxa administrativa do serviço de empréstimo é diferente dos outros serviços, pois ele é calculado a partir do valor emprestado ao cliente. Como esta lógica é específica 9
26 HERANÇA 94 para o serviço de empréstimo, devemos acrescentar um método para implementar esse cálculo na classeemprestimo. 1 class Emprestimo extends Servico { 2 // ATRIBUTOS 4 public double calculataxadeemprestimo() { 5 return this.valor * 0.1; 6 } Código Java 7.12: Emprestimo.java Para os objetos da classe Emprestimo, devemos chamar o método calculataxadeemprestimo(). Para todos os outros serviços, devemos chamar o métodocalculataxa(). Mesmo assim, nada impediria que o método calculataxa() fosse chamado em um objeto da classe Emprestimo, pois ela herda esse método da classe Servico. Dessa forma, existe o risco de alguém erroneamente chamar o método incorreto. Seria mais seguro substituir a implementação do método calculataxa() herdado da classe Servico na classe Emprestimo. Para isso, basta escrever o método calculataxa() também na classe Emprestimo com a mesma assinatura que ele possui na classeservico. 1 class Emprestimo extends Servico { 2 // ATRIBUTOS 4 public double calculataxa() { 5 return this.valor * 0.1; 6 } Código Java 7.1: Emprestimo.java Os métodos das classes específicas têm prioridade sobre os métodos das classes genéricas. Em outras palavras, se o método chamado existe na classe filha ele será chamado, caso contrário o método será procurado na classe mãe. Quando definimos um método com a mesma assinatura na classe base e em alguma classe derivada, estamos aplicando o conceito de Reescrita de Método. Fixo + Específico Suponha que o preço de um serviço é a soma de um valor fixo mais um valor que depende do tipo do serviço. Por exemplo, o preço do serviço de empréstimo é 5 reais mais uma porcentagem do valor emprestado ao cliente. O preço do serviço de seguro de veículo é 5 reais mais uma porcentagem do valor do veículo segurado. Em cada classe específica, podemos reescrever o método calculataxa(). 1 class Emprestimo extends Servico { 2 // ATRIBUTOS 4 public double calculataxa() { 5 return 5 + this.valor * 0.1; 6 } 94
27 95 HERANÇA Código Java 7.14: Emprestimo.java 1 class SeguraDeVeiculo extends Servico { 2 // ATRIBUTOS 4 public double calculataxa() { 5 return 5 + this.veiculo.gettaxa() * 0.05; 6 } Código Java 7.15: SeguraDeVeiculo.java Se o valor fixo dos serviços for atualizado, todas as classes específicas devem ser modificadas. Outra alternativa seria criar um método na classeservico para calcular o valor fixo de todos os serviços e chamá-lo dos métodos reescritos nas classes específicas. 1 class Servico { 2 public double calculataxa() { return 5 ; 4 } 5 } Código Java 7.16: Servico.java 1 class Emprestimo extends Servico { 2 // ATRIBUTOS 4 public double calculataxa() { 5 return super.calculataxa() + this.valor * 0.1; 6 } Código Java 7.17: Emprestimo.java Dessa forma, quando o valor padrão do preço dos serviços é alterado, basta modificar o método na classeservico. Construtores e Herança Quando temos uma hierarquia de classes, as chamadas dos construtores são mais complexas do que o normal. Pelo menos um construtor de cada classe de uma mesma sequência hierárquica deve ser chamado ao instanciar um objeto. Por exemplo, quando um objeto da classe Emprestimo é criado, pelo menos um construtor da própria classe Emprestimo e um da classe Servico devem ser executados. Além disso, os construtores das classes mais genéricas são chamados antes dos construtores das classes específicas. 1 class Servico { 2 // ATRIBUTOS 4 public Servico() { 5 System. out. println(" Servico"); 6 } Código Java 7.18: Servico.java 95
28 HERANÇA 96 1 class Emprestimo extends Servico { 2 // ATRIBUTOS 4 public Emprestimo() { 5 System. out. println(" Emprestimo"); 6 } Código Java 7.19: Emprestimo.java Por padrão, todo construtor chama o construtor sem argumentos da classe mãe se não existir nenhuma chamada de construtor explícita. Exercícios de Fixação 1 Para não confundir, feche o projeto Encapsulamento clicando com o botão direito do mouse sobre esse projeto e selecionando a opção Close Project. Em seguida, crie um novo projeto para os exercícios desse capítulo. Digite CTRL + e pesquise por Create a Java project. Selecione a opção correspondente e siga a imagem abaixo. 96
29 97 HERANÇA 2 Defina uma classe chamada Funcionario para modelar os funcionários de um banco. Sabendo que todo funcionário possui nome e salário, inclua os getters e setters dos atributos. 1 public class Funcionario { 2 private String nome; private double salario; 4 5 // GETTERS AND SETTERS 6 } Código Java 7.20: Funcionario.java Crie uma classe para cada tipo específico de funcionário herdando da classe Funcionario. Considere apenas três tipos específicos de funcionários: gerentes, telefonistas e secretarias. Os gerentes possuem um nome de usuário e uma senha para acessar o sistema do banco. As telefonistas possuem um código de estação de trabalho. As secretarias possuem um número de ramal. 97
30 HERANÇA 98 1 public class Gerente extends Funcionario { 2 private String usuario; private String senha; 4 5 // GETTERS AND SETTERS 6 } Código Java 7.21: Gerente.java 1 public class Telefonista extends Funcionario { 2 private int estacaodetrabalho; 4 // GETTERS AND SETTERS 5 } Código Java 7.22: Telefonista 1 public class Secretaria extends Funcionario { 2 private int ramal; 4 // GETTERS AND SETTERS 5 } Código Java 7.2: Secretaria.java 4 Teste o funcionamento dos três tipos de funcionários criando um objeto de cada uma das classes: Gerente,Telefonista esecretaria. 1 public class TestaFuncionarios { 2 public static void main(string[] args) { Gerente g = new Gerente(); 4 g. setnome(" Rafael Cosentino"); 5 g. setsalario(2000); 6 g. setusuario(" rafael. cosentino"); 7 g. setsenha(" 1245"); 8 9 Telefonista t = new Telefonista(); 10 t. setnome(" Carolina Mello"); 11 t. setsalario(1000); 12 t. setestacaodetrabalho(1); 1 14 Secretaria s = new Secretaria(); 15 s. setnome(" Tatiane Andrade"); 16 s. setsalario(1500); 17 s. setramal(198); System. out. println(" GERENTE"); 20 System.out.println("Nome: " + g.getnome()); 21 System.out.println("Salário: " + g.getsalario()); 22 System.out.println("Usuário: " + g.getusuario()); 2 System.out.println("Senha: " + g.getsenha()); System. out. println(" TELEFONISTA"); 26 System.out.println("Nome: " + t.getnome()); 27 System.out.println("Salário: " + t.getsalario()); 28 System.out.println("Estacao de trabalho: " + t.getestacaodetrabalho()); 29 0 System. out. println(" SECRETARIA"); 1 System.out.println("Nome: " + s.getnome()); 2 System.out.println("Salário: " + s.getsalario()); System.out.println("Ramal: " + s.getramal()); 4 } 5 } Código Java 7.24: TestaFuncionarios.java 98
31 99 HERANÇA Execute a classetestafuncionarios. 5 Suponha que todos os funcionários recebam uma bonificação de 10% do salário. Acrescente um método na classefuncionario para calcular essa bonificação. 1 public class Funcionario { 2 private String nome; private double salario; 4 5 public double calculabonificacao() { 6 return this.salario * 0.1; 8 9 // GETTERS AND SETTERS 10 } Código Java 7.25: Funcionario.java 6 Altere a classe TestaFuncionarios para exibir a bonificação de cada funcionário, além dos dados que já foram impressos. Depois, execute o teste novamente. 1 public class TestaFuncionarios { 2 public static void main(string[] args) { Gerente g = new Gerente(); 4 g. setnome(" Rafael Cosentino"); 5 g. setsalario(2000); 6 g. setusuario(" rafael. cosentino"); 7 g. setsenha(" 1245"); 8 9 Telefonista t = new Telefonista(); 10 t. setnome(" Carolina Mello"); 11 t. setsalario(1000); 12 t. setestacaodetrabalho(1); 1 14 Secretaria s = new Secretaria(); 15 s. setnome(" Tatiane Andrade"); 16 s. setsalario(1500); 17 s. setramal(198); System. out. println(" GERENTE"); 20 System.out.println("Nome: " + g.getnome()); 21 System.out.println("Salário: " + g.getsalario()); 22 System.out.println("Usuário: " + g.getusuario()); 2 System.out.println("Senha: " + g.getsenha()); 24 System.out.println("Bonificação: " + g.calculabonificacao()); System. out. println(" TELEFONISTA"); 27 System.out.println("Nome: " + t.getnome()); 28 System.out.println("Salário: " + t.getsalario()); 29 System.out.println("Estacao de trabalho: " + t.getestacaodetrabalho()); 0 System.out.println("Bonificação: " + t.calculabonificacao()); 1 2 System. out. println(" SECRETARIA"); System.out.println("Nome: " + s.getnome()); 4 System.out.println("Salário: " + s.getsalario()); 5 System.out.println("Ramal: " + s.getramal()); 6 System.out.println("Bonificação: " + s.calculabonificacao()); 8 } Código Java 7.26: TestaFuncionarios.java Execute a classetestafuncionarios e veja os valores das bonificações. 99
32 HERANÇA Suponha que os gerentes recebam uma bonificação maior que os outros funcionários. Reescreva o métodocalculabonificacao() na classegerente. 1 public class Gerente extends Funcionario { 2 private String usuario; private String senha; 4 5 public double calculabonificacao() { 6 return this.getsalario() * ; 8 9 // GETTERS AND SETTERS 10 } Código Java 7.27: Gerente.java Execute a classetestafuncionarios e veja os valores das bonificações. Exercícios Complementares 1 Defina na classe Funcionario um método chamado mostradados para exibir no Console o nome, salário e bonificação dos funcionários. 2 Reescreva o método mostradados nas classes Gerente, Telefonista e Secretaria para acrescentar os dados específicos de cada tipo de funcionário. Modifique a classetestafuncionarios para utilizar o métodomostradados()
33 POLIMORFISMO C A P Í T U L O 8 Controle de Ponto O sistema do banco deve possuir um controle de ponto para registrar a entrada e saída dos funcionários. O pagamento dos funcionários depende dessas informações. Podemos definir uma classe para implementar o funcionamento de um relógio de ponto. 1 class ControleDePonto { 2 public void registraentrada( Gerente g) { 4 SimpleDateFormat sdf = new SimpleDateFormat(" dd/ MM/ yyyy HH: mm: ss"); 5 Date agora = new Date(); 6 7 System.out.println("ENTRADA: " + g.getcodigo()); 8 System.out.println("DATA: " + sdf.format(agora)); 9 } public void registrasaida( Gerente g) { 12 SimpleDateFormat sdf = new SimpleDateFormat(" dd/ MM/ yyyy HH: mm: ss"); 1 Date agora = new Date(); System.out.println("SAÍDA: " + g.getcodigo()); 16 System.out.println("DATA: " + sdf.format(agora)); 1 18 } Código Java 8.1: ControleDePonto.java A classe acima possui dois métodos: o primeiro para registrar a entrada e o segundo para registrar a saída dos gerentes do banco. Contudo, esses dois métodos não são aplicáveis aos outros tipos de funcionários. Seguindo essa abordagem, a classe ControleDePonto precisaria de um par de métodos para cada cargo. Então, a quantidade de métodos dessa classe seria igual a quantidade de cargos multiplicada por dois. Imagine que no banco exista 0 cargos distintos. Teríamos 60 métodos na classe ControleDePonto. Os procedimentos de registro de entrada e saída são idênticos para todos os funcionários. Consequentemente, qualquer alteração na lógica desses procedimentos implicaria na modificação de todos os métodos da classecontroledeponto. Além disso, se o banco definir um novo tipo de funcionário, dois novos métodos praticamente idênticos aos que já existem teriam de ser adicionados na classe ControleDePonto. Analogamente, se um cargo deixar de existir, os dois métodos correspondentes da classecontroledeponto deverão ser retirados
34 P OLIMORFISMO 102 SECRETÁRIAS TELEFONISTAS SECRETÁRIAS TELEFONISTAS GERENTES GERENTES Figura 8.1: Métodos específicos Modelagem dos funcionários Com o intuito inicial de reutilizar código, podemos modelar os diversos tipos de funcionários do banco utilizando o conceito de herança. 1 class Funcionario { 2 private int codigo ; 4 // GETTERS AND SETTERS 5 } Código Java 8.2: Funcionario.java 1 class Gerente extends Funcionario { 2 private String usuario ; private String senha ; 4 5 // GETTERS AND SETTERS 6 } Código Java 8.: Gerente.java 1 class Telefonista extends Funcionario { 2 private int ramal ; 4 // GETTERS AND SETTERS 5 } Código Java 8.4: Telefonista.java É UM (extends) 102
35 10 POLIMORFISMO Além de gerar reaproveitamento de código, a utilização de herança permite que objetos criados a partir das classes específicas sejam tratados como objetos da classe genérica. Em outras palavras, a herança entre as classes que modelam os funcionários permite que objetos criados a partir das classes Gerente ou Telefonista sejam tratados como objetos da classe Funcionario. No código da classe Gerente utilizamos a palavra extends. Ela pode ser interpretada como a expressão: É UM ou É UMA. 1 class Gerente extends Funcionario 2 // TODO Gerente É UM Funcionario Código Java 8.5: Gerente.java Como está explícito no código que todo gerente é um funcionário então podemos criar um objeto da classegerente e tratá-lo como um objeto da classefuncionario também. 1 // Criando um objeto da classe Gerente 2 Gerente g = new Gerente(); 4 // Tratando um gerente como um objeto da classe Funcionario 5 Funcionario f = g; Código Java 8.6: Generalizando Em alguns lugares do sistema do banco será mais vantajoso tratar um objeto da classe Gerente como um objeto da classefuncionario. Melhorando o controle de ponto O registro da entrada ou saída não depende do cargo do funcionário. Não faz sentido criar um método que registre a entrada para cada tipo de funcionário, pois eles serão sempre idênticos. Analogamente, não faz sentido criar um método que registre a saída para cada tipo de funcionário. Dado que podemos tratar os objetos das classes derivadas de Funcionario como sendo objetos dessa classe, podemos implementar um método que seja capaz de registrar a entrada de qualquer funcionário independentemente do cargo. Analogamente, podemos fazer o mesmo para o procedimento de saída. 1 class ControleDePonto { 2 public void registraentrada( Funcionario f) { 4 SimpleDateFormat sdf = new SimpleDateFormat(" dd/ MM/ yyyy HH: mm: ss"); 5 Date agora = new Date(); 6 7 System.out.println("ENTRADA: " + f.getcodigo()); 8 System.out.println("DATA: " + sdf.format(agora)); 9 } public void registrasaida( Funcionario f) { 12 SimpleDateFormat sdf = new SimpleDateFormat(" dd/ MM/ yyyy HH: mm: ss"); 1 Date agora = new Date();
36 P OLIMORFISMO System. out. println ( " SAÍDA : " + f. getcodigo () ); 16 System. out. println ( " DATA : " + sdf. format ( agora )); 17 } 18 } Código Java 8.7: ControleDePonto.java Os métodos registraentrada() e registrasaida() recebem referências de objetos da classe Funcionario como parâmetro. Consequentemente, podem receber referências de objetos de qualquer classe que deriva direta ou indiretamente da classe Funcionario. A capacidade de tratar objetos criados a partir das classes específicas como objetos de uma classe genérica é chamada de polimorfismo. Aplicando a ideia do polimorfismo no controle de ponto, facilitamos a manutenção da classe ControleDePonto. Qualquer alteração no procedimento de entrada ou saída implica em alterações em métodos únicos. Além disso, novos tipos de funcionários podem ser definidos sem a necessidade de qualquer alteração na classe ControleDePonto. Analogamente, se algum cargo deixar de existir, nada precisará ser modificado na classe ControleDePonto. FUNCIONÁRIOS TELEFONISTAS GERENTES SECRETÁRIAS FUNCIONÁRIOS Figura 8.2: Método genérico Exercícios de Fixação 1 Para não confundir, feche o projeto Heranca clicando com o botão direito do mouse sobre esse projeto e selecionando a opção Close Project. Em seguida, crie um novo projeto para os exercícios desse capítulo. Digite CTRL + e pesquise por Create a Java project. Selecione a opção correspondente e siga a imagem abaixo
37 105 POLIMORFISMO 2 Defina uma classe chamada Conta para modelar as contas de um banco. 1 public class Conta { 2 private double saldo; 4 // GETTERS AND SETTERS 5 } Código Java 8.8: Conta.java Defina duas classes específicas para dois tipos de contas do banco: poupança e corrente. 1 public class ContaPoupanca extends Conta { 2 private int diadoaniversario; 4 // GETTERS AND SETTERS 5 } Código Java 8.9: ContaPoupanca.java 105
38 POLIMORFISMO public class ContaCorrente extends Conta { 2 private double limite; 4 // GETTERS AND SETTERS 5 } Código Java 8.10: ContaCorrente.java 4 Defina uma classe chamada GeradorDeExtrato com seguinte código. 1 import java.text.simpledateformat; 2 import java.util.date; 4 public class GeradorDeExtrato { 5 6 public void imprimeextratobasico( Conta c) { 7 SimpleDateFormat sdf = new SimpleDateFormat(" dd/ MM/ yyyy HH: mm: ss"); 8 Date agora = new Date(); 9 10 System.out.println("DATA: " + sdf.format(agora)); 11 System.out.println("SALDO: " + c.getsaldo()); 12 } 1 } Código Java 8.11: GeradorDeExtrato.java Não se preocupe com os comandos import. Discutiremos sobre eles posteriormente. 5 Teste a classegeradordeextrato. Crie uma classe chamada TestaGeradorDeExtrato. 1 public class TestaGeradorDeExtrato { 2 public static void main(string[] args) { 4 GeradorDeExtrato gerador = new GeradorDeExtrato(); 5 6 ContaPoupanca cp = new ContaPoupanca(); 7 cp. setsaldo(1000); 8 9 ContaCorrente cc = new ContaCorrente(); 10 cc. setsaldo(1000); gerador. imprimeextratobasico( cp); 1 gerador. imprimeextratobasico( cc); 14 } 15 } Código Java 8.12: TestaGeradorDeExtrato.java Execute a classetestageradordeextrato. Exercícios Complementares 1 Defina uma classe chamada Funcionario para modelar os funcionários de um banco. 2 Implemente duas classes específicas para modelar dois tipos particulares de funcionários do 106
39 107 POLIMORFISMO banco: os gerentes e as telefonistas. Implemente o controle de ponto dos funcionários. Crie uma classe com dois métodos: o primeiro para registrar a entrada dos funcionários e o segundo para registrar a saída. 4 Teste a lógica do controle de ponto, registrando a entrada e a saída de um gerente e de uma telefonista
ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS
ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o
Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho [email protected] http://www.diemesleno.com.br
Programação Orientada a Objetos Prof. Diemesleno Souza Carvalho [email protected] http://www.diemesleno.com.br Programação Orientada a Objetos Na aula passada, vimos: Encapsulamento Programação Orientada
Programação Orientada a Objetos Herança Técnico em Informática. Prof. Marcos André Pisching, M.Sc.
Herança Técnico em Informática, M.Sc. Herança 2 Herança Reutilização de código Exemplo Banco: Um banco oferece diversos serviços que podem ser contratados individualmente pelos clientes. Quando um serviço
Orientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Introdução a Java. Hélder Nunes
Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais
Exercícios de Revisão Java Básico
Exercícios de Revisão Java Básico (i) Programação básica (estruturada) 1) Faça um programa para calcular o valor das seguintes expressões: S 1 = 1 1 3 2 5 3 7 99... 4 50 S 2 = 21 50 22 49 23 48...250 1
Roteiro do Programa e Entrada/Saída
Roteiro do Programa e Entrada/Saída c Professores de ALPRO I Faculdade de Informática PUCRS 03/2012 ALPRO I (FACIN) Roteiro do Programa e E/S 03/2012 1 / 32 Sumário 1 Relembrando 2 Programa Definição de
Herança. Alberto Costa Neto DComp - UFS
Herança Alberto Costa Neto DComp - UFS 1 Motivação Vimos como se faz encapsulamento e a importância de fazê-lo... Contudo, também é possível fazer encapsulamento em algumas linguagens não OO O que mais
Implementando uma Classe e Criando Objetos a partir dela
Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 04 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 2 Prof. Cristóvão Cunha Implementando uma Classe
Programação Orientada a Objetos Classes Abstratas Técnico em Informática. Prof. Marcos André Pisching, M.Sc.
Classes Abstratas Técnico em Informática, M.Sc. Classes Abstratas 2 Classes Abstratas Abstração Devemos considerar as qualidades e comportamentos independentes dos objetos a que pertencem, isolamos seus
DEFINIÇÃO DE MÉTODOS
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 2 DEFINIÇÃO DE MÉTODOS Todo o processamento que um programa Java faz está definido dentro dos
Análise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 01 Orientação a Objetos Edirlei Soares de Lima Paradigmas de Programação Um paradigma de programação consiste na filosofia adotada na
Programação de Computadores - I. Profª Beatriz Profº Israel
Programação de Computadores - I Profª Beatriz Profº Israel Ambiente de Desenvolvimento Orientação a Objetos É uma técnica de desenvolvimento de softwares que consiste em representar os elementos do mundo
Herança. Algoritmos e Programação II. Aula 5 Herança
Algoritmos e Programação II Aula 5 Herança *Adaptado do material do Prof. Júlio Machado Herança Uma característica importante da programação orientada a objetos é permitir a criação de novas classes com
NOVIDADES DO JAVA PARA PROGRAMADORES C
PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB NOVIDADES DO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o Conceito de Classes e Objetos Capacitar para a criação de objetos simples
Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP
Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente
Sistemas Operacionais. Curso Técnico Integrado Profa: Michelle Nery
Sistemas Operacionais Curso Técnico Integrado Profa: Michelle Nery Conteúdo Programático CONTAS DE E GRUPOS DE O Microsoft Management Console - MMC Permissões de Segurança de um Console Contas de Usuários
Programação Orientada a Objetos. Encapsulamento
Programação Orientada a Objetos Encapsulamento de Dados Ocultação de dados Garante a transparência de utilização dos componentes do software, facilitando: Entendimento Reuso Manutenção Minimiza as interdependências
Programação por Objectos. Java
Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/52 Herança revisão A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse pode
MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES. [email protected]
MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES [email protected] Externamente ao sistema, os atores visualizam resultados de cálculos, relatórios produzidos, confirmações de requisições solicitadas,
Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores
Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores 1 Exercícios Exercício 1: Construtores e Testes Analise a classe Conta.java, mostrada na
UML & Padrões Aula 3. UML e Padrões - Profª Kelly Christine C. Silva
UML & Padrões Aula 3 UML e Padrões - Profª Kelly Christine C. Silva 1 UML & Padrões Aula 3 Diagrama de Casos de Uso Profª Kelly Christine C. Silva O que vamos tratar: Modelos de Caso de Uso Diagrama de
Orientação a Objetos e a Linguagem Java
Orientação a Objetos e a Linguagem Java Afrânio Assis [email protected] Novembro/2006 1 Reutilizição com Herança e Composição Novembro/2006 2 Introdução Separar as partes que podem mudar das partes que
Programação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus
Programação Orientada a Objetos: Lista de exercícios #1 Bruno Góis Mateus 1 Contents Programação Orientada a Objetos (Bruno Góis Mateus ): Lista de exercícios #1 Classes e Instanciação 3 A classe Circle...............................................
Análise de Programação
Análise de Programação Conceitos Avançados da Linguagem de Programação Java Prof Gilberto B Oliveira Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros
Montagem e Manutenção. Luís Guilherme A. Pontes
Montagem e Manutenção Luís Guilherme A. Pontes Introdução Qual é a importância da Montagem e Manutenção de Computadores? Sistema Binário Sistema Binário Existem duas maneiras de se trabalhar e armazenar
O comando switch. c Professores de ALPRO I 04/2012. Faculdade de Informática PUCRS. ALPRO I (FACIN) O comando switch 04/2012 1 / 31
O comando switch c Professores de ALPRO I Faculdade de Informática PUCRS 04/2012 ALPRO I (FACIN) O comando switch 04/2012 1 / 31 Sumário 1 Relembrando... 2 Comando de Seleção (Parte III) Menus e o comando
MANUAL DA SECRETARIA
MANUAL DA SECRETARIA Conteúdo Tela de acesso... 2 Liberação de acesso ao sistema... 3 Funcionários... 3 Secretaria... 5 Tutores... 7 Autores... 8 Configuração dos cursos da Instituição de Ensino... 9 Novo
Configurando a emissão de boletos no sistema
Configurando a emissão de boletos no sistema Entre nossos sistemas, o GIM, o GECOB, o GEM, o TRA-FRETAMENTO e os 15 sistemas da linha 4U (GE-COMERCIO 4U, GEPAD 4U, GE-INFO 4U, etc ) possuem funções para
LINGUAGEM ORIENTADA A OBJETOS
LINGUAGEM ORIENTADA A OBJETOS TI MÓDULO II O ECLIPSE O eclipse é uma IDE Open Source (código fonte aberto) que serve para o desenvolvimento em muitas linguagens: PHP Java Python HTML C/C++ A IDE Eclipse
Programação Orientada a Objetos e Java - Introdução. Carlos Lopes
Programação Orientada a Objetos e Java - Introdução Carlos Lopes POO e Java Objetivo: proporcionar uma visão dos conceitos de POO e do seu uso na estruturação dos programas em Java. Classes e objetos em
Boletim Eletrônico de Recolhimento Manual do Sistema. Boletim Eletrônico de Recolhimento. Manual do Sistema
Boletim Eletrônico de Recolhimento Manual do Sistema Versão 1.2 Junho / 2013 Sumário 1. Introdução... - 3-2. O Sistema BOLETIM ELETRÔNICO DE RECOLHIMENTO... - 3-3. Pré-requisitos... - 3-4. Primeiro Acesso...
Resolução da lista de exercícios de casos de uso
Resolução da lista de exercícios de casos de uso 1. Explique quando são criados e utilizados os diagramas de casos de uso no processo de desenvolvimento incremental e iterativo. Na fase de concepção se
Programação Orientada a Objetos em Java
Programação Orientada a Objetos em Java Rone Ilídio da Silva Universidade Federal de São João del-rei Campus Alto Paraopeba 1:14 1 Objetivo Apresentar os principais conceitos de Programção Orientada a
EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS
Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor
Orientação a Objetos com Java
Orientação a Objetos com Java Julio Cesar Nardi [email protected] 2011/2 Apresentação 3: Orientação Objetos: Conceitos Básicos Objetivos: Compreender os Conceitos Básicos da Orientação a Objetos;
Conectar diferentes pesquisas na internet por um menu
Conectar diferentes pesquisas na internet por um menu Pré requisitos: Elaboração de questionário Formulário multimídia Publicação na internet Uso de senhas na Web Visualização condicionada ao perfil A
Introdução à orientação a objetos. João Tito Almeida Vianna 25/05/2013
Introdução à orientação a objetos João Tito Almeida Vianna 25/05/2013 Roteiro Aula 2 Motivação Revisão dos conceitos da aula 1 Preparação para os exercícios Exercícios propostos 2 Motivação A orientação
BC0505 Processamento da Informação
BC0505 Processamento da Informação Assunto: Modularização de código e passagem de parâmetros Aula Prática: 4 Versão: 0.2 Introdução Modularização No Java, como em outras linguagens de Programação Orientadas
CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word 2010. Sumário
CADERNO DE INFORMÁTICA FACITA Faculdade de Itápolis Aplicativos Editores de Texto WORD 2007/2010 Sumário Editor de texto... 3 Iniciando Microsoft Word... 4 Fichários:... 4 Atalhos... 5 Área de Trabalho:
LASERTECK SOFTECK FC MANUAL DO USUÁRIO
LASERTECK SOFTECK FC MANUAL DO USUÁRIO 2015 SUMÁRIO 1 INTRODUÇÃO... 3 2 REQUISITOS DO SISTEMA... 3 3 INSTALAÇÃO... 3 4 O QUE MUDOU... 3 5 COMO COMEÇAR... 4 6 FORMULÁRIOS DE CADASTRO... 5 7 CADASTRO DE
Algoritmos e Programação II. Sobrecarga
Algoritmos e Programação II Baseado no Material do Prof. Júlio Machado Sobrecarga Em várias linguagens é comum encontrarmos rotinas que fazem basicamente a mesma coisa, porém, têm nomes distintos porque
Desenvolvimento OO com Java Orientação a objetos básica
Desenvolvimento OO com Java Orientação a objetos básica Vítor E. Silva Souza ([email protected]) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal
Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite
Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite Pessoal, fiz uma coletânea das questões mais recentes de concursos públicos de TODO o Brasil de várias bancas diferentes sobre os assuntos Orientação
UML: Diagrama de Casos de Uso, Diagrama de Classes
UML: Diagrama de Casos de Uso, Diagrama de Classes Diagrama de Casos de Uso O modelo de casos de uso visa responder a pergunta: Que usos (funcionalidades) o sistema terá? ou Para que aplicações o sistema
Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais
Curso de Java Orientação a objetos e a Linguagem JAVA Roteiro A linguagem Java e a máquina virtual Objetos e Classes Encapsulamento, Herança e Polimorfismo Primeiro Exemplo A Linguagem JAVA Principais
3.1 Definições Uma classe é a descrição de um tipo de objeto.
Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Classes Autoria:Aristófanes Corrêa Silva Adaptação:
PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP
PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP O PHP através da versão 5, veio desenvolvido com suporte a programação orientada a objetos. O que significa isso? Que a partir da versão 5 é possível criar bibliotecas
Manual do Usuário CMS WordPress Versão atual: 3.0
Manual do Usuário CMS WordPress Versão atual: 3.0 1 - Introdução O Centro de Gestão do Conhecimento Organizacional, CGCO, criou, em março de 2008, uma equipe para atender à demanda de criação de novos
Manual do Software Pctel Supervisor Desktop
Manual do Software Pctel Supervisor Desktop Conteúdo O que é o Pctel Supervisor Desktop?...03 O que é usuário do canal (PA)?...03 Como cadastrar usuário do canal (PA)?...04 Como remover um usuário do canal?...05
Sistemas Operacionais. Prof. André Y. Kusumoto [email protected]
Sistemas Operacionais Prof. André Y. Kusumoto [email protected] Estruturas de Sistemas Operacionais Um sistema operacional fornece o ambiente no qual os programas são executados. Internamente,
Manual do Teclado de Satisfação Online WebOpinião
Manual do Teclado de Satisfação Online WebOpinião Versão 1.2.3 27 de novembro de 2015 Departamento de Engenharia de Produto (DENP) SEAT Sistemas Eletrônicos de Atendimento 1. Introdução O Teclado de Satisfação
Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO?
Índice BlueControl... 3 1 - Efetuando o logon no Windows... 4 2 - Efetuando o login no BlueControl... 5 3 - A grade de horários... 9 3.1 - Trabalhando com o calendário... 9 3.2 - Cancelando uma atividade
Excel Planilhas Eletrônicas
Excel Planilhas Eletrônicas Capitulo 1 O Excel é um programa de cálculos muito utilizado em empresas para controle administrativo, será utilizado também por pessoas que gostam de organizar suas contas
Casos de Uso. Professor MSc Wylliams Barbosa Santos [email protected] wylliams.wordpress.com Laboratório de Programação
Casos de Uso Professor MSc Wylliams Barbosa Santos [email protected] wylliams.wordpress.com Laboratório de Programação Agenda Caso de Uso Conceitos Iniciais Cenário Principal Cenários Alternativos Atores
Disciplina Técnicas de Modelagem
T É C N I C A 3 MODELAGEM CONCEITUAL GENERALIZAÇÃO/ESPECIALIZAÇÃO, AGREGAÇÃO E COMPOSIÇÃO Generalização/Especialização Herança é o termo em orientação a objetos que se refere à criação de novas classes
Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em
O Sistema foi inteiramente desenvolvido em PHP+Javascript com banco de dados em MySQL.
Nome do Software: Gerenciador de Projetos Versão do Software: Gerenciador de Projetos 1.0.0 1. Visão Geral Este Manual de Utilização do Programa Gerenciador de Projetos via Web, tem por finalidade facilitar
Manual das planilhas de Obras v2.5
Manual das planilhas de Obras v2.5 Detalhamento dos principais tópicos para uso das planilhas de obra Elaborado pela Equipe Planilhas de Obra.com Conteúdo 1. Gerando previsão de custos da obra (Módulo
Notas de versão. Versão 3.16.1.0
Notas de versão Sistema Gescor Versão 3.16.1.0 Lançamento Abril/2016 Interface - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3 1. Nova interface e usabilidade do sistema.
1 ACESSO PARA SECRETÁRIA... 4 2 - CONFIGURAR HORÁRIOS DE ATENDIMENTO... 4 2.1 BLOQUEANDO E HABILITANDO HORÁRIOS... 5 3 PRÉ-DEFININDO PARÂMETROS DE
2 1 ACESSO PARA SECRETÁRIA... 4 2 - CONFIGURAR HORÁRIOS DE ATENDIMENTO... 4 2.1 BLOQUEANDO E HABILITANDO HORÁRIOS... 5 3 PRÉ-DEFININDO PARÂMETROS DE ATENDIMENTO... 6 4 - A TELA AGENDA... 7 4.1 - TIPOS
PROGRAMANDO EM C# ORIENTADO A OBJETOS
PROGRAMANDO EM C# ORIENTADO A OBJETOS AGENDA MÓDULO 2 Domínio e Aplicação Objetos, Atributos e Métodos Classes em C# Criando Objetos em C# Referências em C# Manipulando Atributos Valores Padrão Exercícios
Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;
um objeto; é definido; Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo; class ClasseBase{ é instanciado; $objetobase = new ClasseBase; Caso queira,
Dicas para usar melhor o Word 2007
Dicas para usar melhor o Word 2007 Quem está acostumado (ou não) a trabalhar com o Word, não costuma ter todo o tempo do mundo disponível para descobrir as funcionalidades de versões recentemente lançadas.
Manual de Utilização do PDV Klavix
Manual de Utilização do PDV Klavix Página 1/20 Instalando a partir do CD Se você recebeu um CD de instalação, rode o programa Instalador que se encontra no raiz do seu CD. Ele vai criar a pasta c:\loureiro
As ações, em sua maioria, são negociadas a partir de códigos formados através de letras e números:
Como funciona o mercado de ações Conceitualmente, uma ação é um pedaço de uma empresa, ou seja, comprar uma ação significa ser sócio de uma companhia. No Brasil, as ações de empresas de capital aberto
Fração como porcentagem. Sexto Ano do Ensino Fundamental. Autor: Prof. Francisco Bruno Holanda Revisor: Prof. Antonio Caminha M.
Material Teórico - Módulo de FRAÇÕES COMO PORCENTAGEM E PROBABILIDADE Fração como porcentagem Sexto Ano do Ensino Fundamental Autor: Prof. Francisco Bruno Holanda Revisor: Prof. Antonio Caminha M. Neto
agility made possible
RESUMO DA SOLUÇÃO Utilitário ConfigXpress no CA IdentityMinder a minha solução de gerenciamento de identidades pode se adaptar rapidamente aos requisitos e processos de negócio em constante mudança? agility
Tópicos Avançados em Banco de Dados Gerenciamento de Transações em Banco de Dados. Prof. Hugo Souza
Tópicos Avançados em Banco de Dados Gerenciamento de Transações em Banco de Dados Prof. Hugo Souza Até agora vimos como é formada a infraestrutura física e lógica das bases de dados com os principais componentes
Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.
1 - Criando uma classe em Java Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans. Antes de criarmos a(s) classe(s) é necessário criar o projeto
Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010
Módulo 02 Programação Orientada a Objetos Última atualização: 07/06/2010 1 Objetivos Definir conceitos de orientação a objetos: o abstração, encapsulamento, pacotes. Discutir reutilização de código em
Tabelas vista de estrutura
Tabelas vista de estrutura A vista de estrutura permite definir a configuração dos dados Vamos adicionar os restantes campos à tabela carros, de acordo com o modelo de dados feito no papel 47 Tabelas vista
Programação Orientada a Objeto
Programação Orientada a Objeto Classes, Atributos, Métodos e Objetos Programação de Computadores II Professor: Edwar Saliba Júnior 1) Java é uma linguagem orientada a objetos. Para que possamos fazer uso
Portal do Projeto Tempo de Ser
Sumário Portal do Projeto Tempo de Ser O que é um Wiki?...2 Documentos...2 Localizando documentos...3 Links...3 Criando um Documento...4 Criando um link...4 Editando um Documento...5 Sintaxe Básica...5
Desenvolvimento de uma Etapa
Desenvolvimento de uma Etapa A Fase Evolutiva do desenvolvimento de um sistema compreende uma sucessão de etapas de trabalho. Cada etapa configura-se na forma de um mini-ciclo que abrange as atividades
PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. [email protected]
PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. [email protected] ROTEIRO 1. Conceitos de Orientação a Objetos Introdução O paradigma da POO Classes
Carrera Pessoal 2015. Guia de uso
Carrera Pessoal 2015 Guia de uso Bem vindo ao Carrera Pessoal 2015, o gerenciador financeiro ideal. Utilizando o Carrera Pessoal você poderá administrar com facilidade as suas finanças e/ou da sua família.
RELATÓRIOS GERENCIAIS
RELATÓRIOS GERENCIAIS Neste treinamento vamos abordar o funcionamento dos seguintes relatórios gerenciais do SisMoura: Curva ABC Fluxo de Caixa Semanal Análise de Lucratividade Análise Financeira o Ponto
Aula 01 Conceitos Iniciais sobre Excel 2010
Aula 01 Conceitos Iniciais sobre Excel 2010 Professor: Bruno Gomes Disciplina: Informática Básica Curso: Gestão de Turismo Sumário da aula: 1. Abrindo o Excel; 2. Conhecendo a Tela do Excel. 3. Inserindo
Treinamento Sistema Condominium Módulo III
Financeiro (Lançamentos Despesas e Saldos) Nesse módulo iremos apresentar os principais recursos da área contábil do sistema. Contábil> Lançamentos Nessa tela é possível lançar as despesas dos condomínios,
O Windows também é um programa de computador, mas ele faz parte de um grupo de programas especiais: os Sistemas Operacionais.
MICROSOFT WINDOWS O Windows também é um programa de computador, mas ele faz parte de um grupo de programas especiais: os Sistemas Operacionais. Apresentaremos a seguir o Windows 7 (uma das versões do Windows)
Informática básica Telecentro/Infocentro Acessa-SP
Informática básica Telecentro/Infocentro Acessa-SP Aula de hoje: Verificando data e hora, desligando o computador, janelas, copiar colar, excluindo um arquivo. Prof: Lucas Aureo Guidastre Verificando data
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 Introdução Esse não é um curso de Java! O objetivo é aprender os conceitos da programação orientada a objetos,
Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)
pg. 1/6 Material de Apoio 5 Herança Observe o código das classes Fatorial e Fibonacci apresentados abaixo. class Fatorial { class Fibonacci { private int n, res; private int n, res; public Fatorial( int
Engenharia de Software II
Engenharia de Software II Aula 28 Revisão para a Prova 2 http://www.ic.uff.br/~bianca/engsoft2/ Aula 28-28/07/2006 1 Matéria para a Prova 2 Gestão de projetos de software Conceitos (Cap. 21) Métricas (Cap.
Bem-vindo ao tópico Múltiplas filiais.
Bem-vindo ao tópico Múltiplas filiais. 1 Ao final deste tópico, você estará apto a: Explicar as opções disponibilizadas com o recurso Múltiplas filiais. Definir as configurações necessárias para trabalhar
Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming
Curso de PHP FATEC - Jundiaí A programação orientada a objetos (object-oriented oriented programming OOP) é um conjunto de técnicas t para organizar o código c em torno de entidades ou objetos representados
Criar formulários preenchidos pelos usuários no Word
Página 1 de 5 Word > Criando documentos específicos > Formas Criar formulários preenchidos pelos usuários no Word Usando um modelo, você pode adicionar controles de conteúdo e texto com instrução no Microsoft
Manual de Uso do Módulo. MerchFinanças
Manual de Uso do Módulo MerchFinanças Bento Gonçalves Julho de 2010 Conteúdo 1. Introdução... 4 2. Menu Cadastros... 5 2.1. Bancos/Contas... 5 2.1.1. Agências... 5 2.1.2. Bancos... 6 2.1.3. Contas... 7
Conceitos básicos da linguagem C
Conceitos básicos da linguagem C 2 Em 1969 Ken Thompson cria o Unix. O C nasceu logo depois, na década de 70. Dennis Ritchie, implementou-o pela primeira vez usando o sistema operacional UNIX criado por
Reuso com Herança a e Composiçã
Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:
Manual do Instar Mail v2.0
Manual do Instar Mail v2.0 Sumário Conteúdo Menu Principal... 2 Menu Cliente... 3 Pagina Categorias do Instar-Mail... 4 Importação... 4 Campanhas... 8 Cadastramento de campanhas do Instar-Mail... 9 Ações
Prototype, um Design Patterns de Criação
Prototype, um Design Patterns de Criação José Anízio Pantoja Maia Este artigo tem como finalidade compreender o funcionamento do padrão de projeto prototype, serão abordados os participantes que compõe
PHP INTRODUÇÃO CLASSES E OBJETOS
INTRODUÇÃO PHP AULA 8 ORIENTAÇÃO A OBJETOS Professor: Leonardo Pereira E-mail: [email protected] Facebook: leongamerti Material de Estudo: http://www.leonti.vv.si A orientação a objetos ou OO é o paradigma
INTRODUÇÃO À INFORMÁTICA GRUPO DE PESQUISA LEITURA NA TELA
INTRODUÇÃO À INFORMÁTICA GRUPO DE PESQUISA LEITURA NA TELA Núcleo de Educação a Distância UniEvangélica 2 ÍNDICE 1 Introdução à Informática... 3 1. O Computador... 3 Teclado... 3 Mouse... 5 Monitor...
Guia do Usuário. idocs Content Server v.2.0-1 -
Guia do Usuário idocs Content Server v.2.0-1 - 2013 BBPaper_Ds - 2 - Sumário Introdução... 4 Inicializando a aplicação... 6 Ambiente... 7 Alterando o ambiente... 8 Senhas... 10 Alterando senhas... 10 Elementos
Bem-vindo ao tópico sobre administração de listas de preços.
Bem-vindo ao tópico sobre administração de listas de preços. Nesse tópico, você aprenderá a administrar listas de preços no SAP Business One. Sua empresa atualiza múltiplas listas de preços para fornecer
5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES
CAPÍTULO 5 5 VETORES E MATRIZES 5.1 Vetores Um vetor armazena uma determinada quantidade de dados de mesmo tipo. Vamos supor o problema de encontrar a média de idade de 4 pessoas. O programa poderia ser:
