Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Orientadas a objetos
Orientação a Objetos
1- Introdução:
2 Conceitos fundamentais
1. Objetos
2. Métodos
É uma rotina que é executada por um objeto ao receber uma mensagem.
Os métodos determinam o comportamento dos objetos de uma classe e
são análogos às funções ou procedimentos da programação estruturada. O
envio de mensagens (chamado de métodos) pode alterar o estado de um
objeto.
3. Atributos
Os atributos são os elementos que definem a estrutura de uma classe. Os
atributos também são conhecidos como variáveis de classe, e podem ser
divididos em dois tipos básicos: atributos de instância e de classe. Os
valores dos atributos de instância determinam o estado de cada objeto.
Um atributo de classe possui um estado que é compartilhado por todos os
objetos de uma classe. Atributos de classe podem ser chamados também
de atributos estáticos ou constantes.
As mensagens enviadas a um objeto (chamada de método) podem mudar
o valor de um ou mais atributos, alterando o estado de um objeto.
4. Classes
Uma classe é um modelo (protótipo) que defini as variáveis (estado) e os
métodos (comportamento) comuns a todos os objetos do mesmo tipo. Na
classe são definidas as variáveis e implementados os métodos. Os objetos
são criados a partir de suas classes.
As classes não são diretamente suportadas em todas as linguagens de objetos,
e não são necessárias para que a linguagem seja orientada a objetos.
Além dos métodos e atributos de uma classe, outros possíveis membros
são:
Construtor: define o comportamento no momento da criação de um objeto de
uma classe;
Destrutor: define o comportamento no momento da
destruição do objeto de uma classe. Normalmente utilizado para liberar
recurso (memória) do sistema; Propriedade: define o acesso a um estado
do objeto;
Evento: define um ponto em que o objeto pode chamar outros
procedimentos de acordo com seu comportamento e estado interno;
Obs.: Lembrar sempre que a classe define as características comuns e os
objetos são instâncias dessa classe, com estado própria.
5. Mensagens
Objetos se comunicam entre si por meio do envio de mensagens. Quando
um objeto A deseja que o objeto B realize um dos seus métodos (de B), o
objeto A envia uma mensagem para o objeto B. Algumas vezes, o objeto
que recebe a mensagem precisa de mais informações para saber exatamente
o que fazer. Por exemplo, quando você quer trocar as marchas de
uma bicicleta, deve-se indicar qual a marcha desejada. Esta informação
acompanha a mensagem como um parâmetro.
Assim, três componentes fazem parte de uma mensagem:
o objeto para onde a mensagem é endereçada (bicicleta); o nome do
método a realizar (mudar marcha); parâmetro(s) necessários para realizar
o método (segunda marcha);
A mensagem, também, pode ser direcionada diretamente a uma classe por
meio da invocação de um método dinâmico.
6. Herança
A herança é um mecanismo que permite criar novas classes a partir de
classes já existentes, aproveitando-se das características existentes na classe
a ser estendida. Com a herança é possível criar classes derivadas (subclasses)
a partir de classes bases (superclasses).
Note que, embora o método calcular tenha sido chamado duas vezes no
interior de mostrarCalculo, o comportamento apresentado variou de acordo
com a classe ao qual ele representava no momento.
Os benefícios do polimorfismo são: a clareza e manutenção do código, a
divisão da complexidade e aplicações flexíveis.
Algumas linguagens promovem o polimorfismo principalmente por meio
do uso de classes abstratas e interfaces, como é o caso da linguagem Java.
8. Sobrecarga
A sobrecarga é um tipo de polimorfismo que permite a existência de vários
métodos de mesmo nome, por´em com assinaturas levemente diferentes, ou
seja, variando no número e tipo de argumentos e o valor de retorno. Ficará
a cargo de o compilador escolher de acordo com as listas de argumento os
procedimentos ou métodos a serem executados. Por exemplo:
public class Soma
{
public int Soma (int x, int y)
{
return x+y;
}
public String Soma (String x, String y)
{
return x+y;
}
public double Soma (double x, double y)
{
return x+y;
}
}
9. Interfaces
Uma interface é uma coleção de definições de métodos abstratos (sem
implementação). É utilizada para os objetos interagirem entre si. A classe
que implementa a interface deve implementar todos os métodos definidos
na interface. Uma interface, também, pode incluir declarações de constantes.
Apesar de uma classe abstrata implementar métodos abstratos, não se
pode confundir interface com classe abstrata. As classes abstratas não
podem ser instanciadas, e estas só são utilizadas como superclasses. Por
exemplo, comida no mundo real. Não existe uma instância (objeto) do
tipo comida. O que existe são instâncias de cenouras, maçãs, bananas, etc.
Comida representa o conceito abstrato e não é capaz de criar uma instância
própria. As classes abstratas podem possuir métodos implementados.
Em Java, para definir uma interface utiliza-se a palavra interface. Embora,
uma classe não possa conter mais de uma superclasse, a classe pode
implementar mais de uma interface. Por este motivo, muitas das vezes as
interfaces são apresentadas como uma alternativa para herança múltipla
de classes.
10. Pacotes
Para tornar as classes mais fáceis de serem encontradas e utilizadas, para
evitar conflitos de nomes e para controlar o acesso, pode-se agrupar classes
relacionadas em pacotes (packages). Os pacotes organizam as classes e as
interfaces relacionadas. Cada pacote criado corresponde a um diretório,
ou seja, as classes e as interfaces de um mesmo pacote devem estar em um
mesmo diretório.
A utilização de pacotes proporciona as seguintes vantagens:
Fica mais fácil para outros programadores determinar quais classes e
interfaces estão relacionadas; Os nomes das classes de um pacote não irão
conflitar com nomes e classes de outros pacotes; Pode-se permitir que
classes dentro de um mesmo pacote tenham acesso irrestrito entre si, e
restringir o acesso por parte de classes definidas fora do pacote.
Em Java, para criar um pacote coloca-se a palavra chave package no início
do arquivo onde a classe ou interface é definida.
Obs.: Apenas os membros (classe, variáveis e métodos) públicos são
acessíveis fora do pacote onde foram definidos.
Obs.: Para uma linguagem ser considerada verdadeiramente orientada a
objetos, a linguagem de programação deve oferecer, no mínimo, as caracter
ísticas de: encapsulamento, herança e polimorfismo.