63
 Classes e Objetos

Classes e Objetos - tiagodemelo.infotiagodemelo.info/aulas/cefet/2008/linguagem-poo/aula-classes... · Classes e Objetos Assim, uma classe é um modelo para um novo tipo de objeto

Embed Size (px)

Citation preview

   

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