Classes e Objetos

Propaganda
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 e operações específicas, que delimitam um conjunto particular de atividades.
Classes e Objetos
●
●
As classes são modelos para os objetos. Um conjunto de objetos que possuem características (atributos) e comportamentos (métodos) comuns podem usar o mesmo modelo, ou seja, pertencem a mesma classe.
Classes e Objetos
●
●
Assim, uma classe é um modelo para um novo tipo de objeto que pode ser definido pelo programador. Já os objetos são instâncias de classes. Dessa forma, pode­se afirmar que as classes são utilizadas para definir novos tipos na POO.
Classes e Objetos
●
Sintaxe de classe em Java
Classes e Objetos
●
A sintaxe da criação de um objeto é:
Classes e Objetos
●
Na verdade, esta sentença realiza três ações:
–
Declaração. Nesta ação, apenas se declara que um objeto será de uma determinada classe declarada, ou seja, declarações não criam objetos. Por exemplo, o comando Pessoa obj apenas declara que obj pertencerá à classe Pessoa, porém o objeto não foi criado e, conseqüentemente, não poderá ser usado antes de ser inicializado.
Classes e Objetos
●
Na verdade, esta sentença realiza três ações:
–
Instanciação. Nesta ação, o operador new cria dinamicamente um novo objeto. Ele requer uma chamada a um construtor, que é um método especial e que será detalhado na seção sobre métodos.
Classes e Objetos
●
Na verdade, esta sentença realiza três ações:
–
Inicialização. Após ter sido criado, é necessário inicializar o objeto. O processo de inicialização consiste em atribuir valores para os atributos dos objetos. Isto é realizado durante a execução do construtor.
Classes e Objetos
●
Acessibilidade
–
Acessibilidade, também conhecida como visibilidade, é um aspecto importante na POO, pois possibilita que o programador limite o uso de certos elementos das classes. –
É com a restrição de acesso que se implementa, em grande parte, o encapsulamento das classes.
–
Java possui três moderadores de acesso explícitos (public, private e protected) e um especificador implícito.
Classes Abstratas
●
●
Uma classe em Java criada para funcionar como um tipo e que pode instanciar objetos é considerada concreta. Diferentemente disto, uma classe em Java será considerada como abstrata se for assim declarada ou nas situações em que os seus métodos declarados não estão implementados, mas são apenas especificados. Classes Abstratas
●
●
Métodos que não possuem implementação também são chamados de abstratos. Classes que possuam métodos abstratos são consideradas também como abstratas e não podem ser instanciadas.
Classes Abstratas
●
Hipóteses em que uma classe Exemplo será abstrata:
–
Se a classe Exemplo possuir explicitamente, pelo menos, um método abstrato.
–
Se qualquer superclasse de Exemplo possuir um método abstrato e a classe Exemplo não implementá­lo.
–
Se a classe Exemplo declarar ou herdar um método abstrato de uma interface e a classe Exemplo não implementá­lo.
Classes Abstratas
●
Sintaxe de uma classe abstrata:
●
Sintaxe de um método abstrato:
Classes Abstratas
●
Exemplo
Classes Abstratas
●
Exemplo de classe abstrata
Classes Internas
●
Classes internas ou internas são classes declaradas dentro de outras classes, sendo consideradas como membros das classes externas.
Classes Internas
●
Exemplo de classe interna
Classes Internas
●
●
A declaração abaixo ocasionaria um erro de compilação:
As classes aninhadas são elementos auxiliares e somente devem ser criadas quando sua implementação se limita a dois ou três métodos simples.
Classes Finais
●
●
●
Uma classe pode ser declarada como final se a sua definição está completa e não se deseja que ela seja extendida. Um erro de compilação ocorrerá se uma classe herdar de outra classe, quando esta for declarada como final. Daí, pode­se afirmar que uma classe final não poderá ter subclasses.
Classes Finais
●
A sintaxe de criação de uma classe final é:
Classes Anônimas
●
Classe anônima é uma classe sem nome e definida como uma subclasse ou para a realização de uma interface, com o propósito de servir para a instanciação de um único objeto. Classes Anônimas
●
●
Como as classes anônimas em Java comprometem a legibilidade do código, estas não devem ser usadas quando for necessário implementar mais do que dois ou três métodos de modo simples. Assim, este tipo de classe será examinada com maior profundidade no assunto de herança.
Atributos
●
●
As características dos objetos ou das suas partes são identificadas através dos seus atributos ou campos. A sintaxe da criação de atributos é:
Constantes
●
●
Um atributo pode se tornar uma constante em Java através do comando final.
Opcionalmente, é possível adicionar um moderador de acesso à constante em Java, com o objetivo de determinar o escopo dessa constante. Constantes
●
A sintaxe da declaração de constantes em Java é:
Métodos
●
Os métodos são blocos de rotinas associadas aos objetos, isto é, trechos de código que permitem realizar ações ou transformações sobre os valores dos atributos, modificando o estado dos objetos e proporcionando o comportamento desejado. Métodos
●
A sintaxe de Java para a criação de métodos é:
Métodos
●
●
O moderador de acesso determina a visibilidade do método. Em geral, os métodos são públicos para que as outras classes possam acessar os atributos privados. Métodos
●
●
O tipo de retorno indica qual o tipo de valor devolvido como resultado do método. Se o método não retornar um valor, deve­se utilizar void para indicar, ao compilador, que não existirá retorno.
Métodos
●
Exemplos de declaração de métodos:
Métodos
●
●
Após a instanciação de um objeto, este pode utilizar os seus métodos através do operador (.), também conhecido como seletor. A sintaxe de Java para uso de métodos pelos objetos é:
Métodos
●
Exemplo de criação e uso de métodos
Métodos Construtores
●
●
Construtores são métodos especiais utilizados para inicializar e preparar novos objetos durante a sua criação.
Não existe um comando especial para diferenciar os construtores dos demais métodos. Porém, eles têm, obrigatoriamente, o mesmo nome que as suas classes.
Métodos Construtores
●
●
Os construtores não têm nenhum tipo de retorno, pois o resultado de sua chamada é sempre uma nova instância. Uma classe pode conter mais de um construtor, desde que não haja construtor com igual lista de parâmetros, ou seja, com igual assinatura do método.
Métodos Construtores
●
●
Java não exige que o programador escreva construtores para as classes.
A inicialização padrão de Java segue as seguintes regras:
–
Variáveis de tipo primitivo numéricas e caracteres recebem o valor 0 (zero).
–
Variáveis de tipo lógica recebem valor falso (false).
–
Variáveis de instância recebem valor null, indicando a ausência de instâncias válidas.
Métodos Construtores
●
Exemplo de uso de construtores
Métodos Construtores
●
Operador this:
–
O operador this é utilizado para que um objeto possa acessar uma referência a si próprio. –
Quando um método não estático é chamado por um objeto particular, o corpo do método utiliza implicitamente o operador this para referenciar as variáveis de instância do objeto e de outros métodos.
Métodos Construtores
●
Exemplo de uso do comando this:
Sobrecarga de Métodos
●
●
●
A sobrecarga de métodos (overload) é uma útil característica da programação orientada a objetos que permite a existência de dois ou mais métodos com o mesmo nome, desde que possuam listas de parâmetros diferentes. O compilador deve escolher qual método chamar. Vários métodos podem ser sobrecarregados numa mesma classe. Sobrecarga de Métodos
●
O benefício deste recurso para o programador é que ele pode manter o mesmo nome para operações similares, mesmo com comportamentos distintos, conseguindo melhorar a semântica do código e simplificar o uso das classes.
Sobrecarga de Métodos
●
Exemplo de uso de métodos sobrecarregados
Métodos Sobrescritos
●
●
●
Quando uma classe é herdada por outra, todos os seus métodos não privados são herdados.
Porém, existem algumas situações que se deseja alterar o comportamento de alguns desses métodos herdados. Isto é realizado através da redefinição dos métodos da superclasse, a partir de sua reescrita, definindo­os com os mesmos nomes e com a mesma lista de parâmetros.
Métodos Sobrescritos
●
●
Dessa forma, a chamada a um método sobrescrito, a partir de um objeto instância da subclasse executará o comportamento redefinido pela subclasse e não mais o definido pela superclasse. Se o objeto for instância da superclasse, o método executará o comportamento definido na própria superclasse.
Métodos Estáticos
●
●
Existem algumas situações em que é desejável que as várias instâncias de uma classe compartilhem alguma informação, tal como o valor de uma constante, um número de identificação, contagem ou totalização. Esse efeito pode ser obtido com o emprego do modificador static. Métodos Estáticos
●
A sintaxe de Java para uso de métodos estáticos é:
Métodos Estáticos
●
Exemplo de uso de métodos estáticos
Método main
●
●
●
O método main(.) é o ponto de entrada de aplicativos Java. Para criar um aplicativo, é necessário que o programador escreva uma definição de classe que inclua o método main(.). A declaração padrão, em Java, deste método é:
Método main
●
●
Por convenção, o método main(.) é declarado como público. No entanto, é necessário que ele seja estático, para que possa ser executado sem a necessidade de construir uma cópia da classe correspondente.
Método main
●
●
O array args, do tipo String, contém quais argumentos que o usuário possa ter fornecido na linha de comando. O nome do vetor é comumente chamado de args, mas poderia ter qualquer outro nome.
Pacotes
●
●
●
Pacotes são unidades de Java que agrupam classes relacionadas. Os pacotes definem restrições de acesso do seu conteúdo para clientes fora da unidade. A criação de pacotes é feita através da instrução package e que deve constar na primeira linha de um arquivo­fonte de Java. Pacotes
●
A seguir, um exemplo de criação de um pacote em Java:
Pacotes
●
●
Por exemplo, num programa desenvolvido dentro da UEA, o pacote poderia ter o seguinte nome:
A seguir, um exemplo de importação de pacotes em Java:
Pacotes
●
●
O asterisco indica que serão importadas todas as classes do pacote. Para importar uma classe específica, ao invés do uso do asterisco, o programador deveria escrever o nome da classe que deseja importar.
Interfaces
●
●
Interface é o mecanismo pelo qual o programador pode definir um conjunto de operações sem se preocupar com sua implementação, indicando assim um modelo de comportamento para outras classes. As interfaces devem conter apenas métodos sem implementação. Interfaces
●
●
●
Conceitualmente, as interfaces equivalem aos métodos abstratos. Também é permitida a declaração de constantes. A sintaxe de uma interface em Java é:
Interfaces
●
●
Para a construção das interfaces em Java é necessário que o nome do arquivo tenha o mesmo nome da interface. Não deve existir implementação dos métodos das interfaces, mas apenas a declaração destes métodos. Interfaces
●
●
Além disso, as constantes (atributos possíveis em uma interface) são implicitamente públicas, estáticas e finais, sendo essa a forma usual de sua declaração. As constantes são consideradas como estáticas porque só pode existir uma cópia do dado disponível e final porque estes dados não devem ser modificados.
Interfaces
●
Comparação entre interfaces e classes abstratas:
Exercícios
●
●
●
●
Como uma classe em Java é estruturada?
Qual é a diferença, quanto às restrições, dos modificadores final e static?
Por que uma classe abstrata não pode ser instanciada?
Por que uma classe concreta não pode ter métodos abstratos?
Exercícios
●
●
●
●
Qual é a diferença entre uma interface e uma classe abstrata?
Qual é a diferença entre um construtor e um método?
Como é possível reconhecer um construtor em Java?
Um método estático pode acessar membros de classe não estáticos? Justifique a sua resposta.
Exercícios
Bibliografia
Download