UFSM > Ciência da Computação > ELC117 - Paradigmas de Programação

Conceitos I (I/O)

Estude a biblioteca de Entrada e Saída em Java, chamada Swing, a qual introduz a entrada e saída de dados em janelas, campos de texto e botões.

Exercícios

  1. Compile e execute o programa

  2. Comente, linha a linha, o programa

Conceitos II (Subclasses e Herança)

Subclasses e Herança são conceitos peculiares à programação orientada por objetos, introduzidas como mecanismos para facilitar o aproveitamento de classes já desenvolvidas na construção de novos programas (classes). Uma classe D pode ser definida como subclasse de outra classe C. Nesse caso, C é chamada de superclasse de D. O mecanismo de definição de subclasses introduz, portanto, uma hierarquia entre as classes definidas em um programa.

Uma classe que não é definida explicitamente como subclasse de nenhuma outra classe é subclasse da classe Object - a classe de nível mais alto na hierarquia de classes do Java.

As relações de subclasse e superclasse são transitivas. Quando necessário, pode-se distinguir entre uma subclasse (superclasse) direta e as demais subclasses (superclasses). Todas as classes são direta ou indiretamente, subclasses da classe Object.

Uma subclasse herda de suas superclasses os métodos e as variáveis definidas nessas superclasses. Um subclasse pode, no entanto, redefinir métodos existentes nas superclasses.

Considerando o exemplo, que representa pontos em um espaço tridimensional, é uma subclasse da classe Ponto vista anteriormente em aula. Isto é indicado pelo uso de extends Ponto.

A classe Ponto3D herda as variáveis as variáveis de Ponto (x e y) e define uma terceira variável (z). Os métodos move e distancia de Ponto são redefinidos na classe Ponto3D.

A palavra super permite o uso de nomes definidos na superclasse direta, que foram redefinidos na subclasse. Neste exemplo, super.move refere-se ao método move da classe Ponto.

A palavra reservada super pode ser usada também para fazer com que o corpo do construtor de uma superclasse seja executado. Veja o uso de super(a,b) no construtor de objetos da classe Ponto3D. Esse comando faz com que o corpo do construtor da classe Ponto seja executado.

Uma característica importante das linguagens orientadas a objetos é que um objeto de uma subclasse pode ser usado em qualquer lugar em que um objeto de uma superclasse pode ser usado. Por exemplo, um objeto da classe Ponto3D pode ser atribuído a uma variável declarada com o tipo Ponto, ou pode ser usado como argumento de um método que tem um parâmetro do tipo Ponto.

Outra característica importante das linguagens orientadas a objetos é referente a métodos definidos em uma classe A que são redefinidos em uma subclasse C de A. Em uma chamada e.m a um método m definido em A e redefinido em C, o método a ser efetivamente chamado depende da classe do objeto alvo da chamada (obtido como resultado da avaliação da expressão e).

Em geral esse objetos alvo da chamada apenas pode ser determinado dinamicamente - uma vez que uma variável de um determinado tipo que é uma classe A pode também armazenar referências a objetos de uma subclasse A.

Exercícios

  1. O seguinte exemplo define uma classe de objetos que representam uma data. Modifique a classe MyData de maneira a incluir também os seguintes métodos: um método anterior, que retorna true se a data representada pelo objeto alvo da chamada é anterior à data passada como argumento para o método, e retorna false, caso contrário. Um método posterior, que retorna true se a data representada pelo objeto alvo da chamada é posterior à data passada como argumento para o método, e retorna false, caso contrário.

  2. Defina uma classe Hora, semelhante à classe Data do exercício anterior , cujos objetos representam uma determinada hora (em horas, minutos e segundos).

  3. Defina uma classe Conta, cujos objetos representam contas bancárias, contendo cada qual as informações: número da conta, nome e cpf do correntista, data de abertura da conta, senha e saldo corrente. Defina um construtor de objetos dessa classe que tenha como parâmetros essas informações (exceto o saldo da conta) e retorne um objeto da classe Conta com saldo corrente igual a zero. Defina também dois métodos para implementação das operações de saque e depósito em conta. Esses métodos devem retorna o saldo da conta corrente, após efetuada a operação correspondente.

  4. Defina uma classe ChequeEspecial, subclasse da classe Conta, que contenha como informação adicional, o valor limite (negativo) para o saldo da conta. Redefina o construtor da classe e o métodos de saque de maneira apropriada.

Material de Apoio

Página criada em: Quart Nov 04 1:30:08 BRT 2010. Última atualização em: Wed Nov 3 13:31:43 2010. Autoria: Juliana Kaizer Vizzotto.