Nós, como seres humanos distinguimos estes objetos em três formas de pensamento:
- Diferenciação;
- Distinção entre o todo e a parte;
- Classificação;
Vemos nestas três formas, dentro da orientação a objetos, uma forma de diminuir a diferença semântica entre o que é real e o que é modelo.
O “homenzinho” acima é chamado de stickman.
É a representação dentro de um UseCase (UML)
O que é um objeto?
Podemos dizer que um objeto é algo quem tem características, ações, possui comportamento, uma identidade, distingui-se um do outro.
Os objetos podem ser físicos:
Um carro, uma casa, um pessoa, um cachorro …
Um conceito:
Um organograma, uma idéia …
Uma entidade:
Um botão, uma combobox, uma planilha Excel® …
O conjunto de ações, qualidades, as mudanças deste objeto influenciam no seu comportamento..
Podemos traduzir para a OO os termos, ações, qualidades, mudanças e comportamento da seguinte forma:
- Ações:
- O que o objeto faz, o verbo. Estes serão nossos Métodos.
- Ex: Andar, Falar, Comer, Quebrar, Salvar.
- Qualidades:
- Serão nossos adjetivos, qualificam nossos objetos. Estes serão nossas Propriedades.
- Ex: Cor, Tipo, Inquebrável, Esfomeado.
- Mudanças:
- Estas serão responsáveis por definir o Estado do nosso objeto.
- Estes por sua vez podem se modificar ao longo do tempo.
- Ex: Com fome, Andando, Quebrando, Comendo.
- Comportamento:
- O comportamento determina como este objeto responde às mudanças de suas qualidades e as ações que ele pode realizar.
- Ex: João está com fome* porque é esfomeado**, logo ele tem que comer***.
* com fome: Mudança de estado;
** esfomeado: Qualidade, adjetivo;
*** comer: Ação, verbo
Logo o comportamento do João pode modificar-se pelo fato de estar com fome.
Instância de um Objeto:
Imagine que temos o objeto Pessoa, este objeto apenas representa uma pessoa, mas se quisermos dar uma identidade a este objeto temos que instanciá-lo, seria como dizer, trazer esta pessoa à vida, criar um novo objeto, um novo carro, um novo botão, uma nova planilha.
Classes:
Uma classe é a descrição (código) de um grupo de objetos com propriedades, comportamento, relacionamentos com outros objetos (associações e agregações).
Um objeto é uma instância de uma classe.
Modificadores deAcesso e Visibilidade:
Os modificadores, como o próprio nome diz, modificam as declarações de propriedades, métodos e classes, eles podem ser:
C# |
Java |
Descrição |
Public |
Public |
Declaram queo método, propriedade ou classe é publica.
Isso quer dizer que está acessível a todos.
//declaração daclasse
public class Pessoa
{
//em uma propriedade
public string Nome { get; set; }
//em um método
public void Comer()
{
}
}
|
Private |
Private |
Declaram que o método, propriedade ou classe é privativo.
Isso quer dizer que está acessível apenas localmente.
Dentro do mesmo objeto.
//declaração daclasse
private class Pessoa
{
//em umapropriedade
private string Nome { get; set; }
//em um método
private void Comer()
{
}
}
|
Static |
Static |
Declaram quea classe não precisa ser instanciada.
Isso quer dizer que não é preciso criar um “novo” objeto,
podemos simplesmente chamar seus métodos e propriedades.
//declaração daclasse
public static class Pessoa
{
//em uma propriedade
public static string Nome { get; set; }
//em um método
public static void Comer()
{
}
}
|
Const |
Final |
Declara um variável constante.
Isso quer dizer que seuvalor não pode ser modificado.
public class Pessoa
{
public const string CPF = "000.000.000-00";
}
|
Sealed |
Final |
Uma classe “selada” não pode ser modificada nem herdada.
//declaração daclasse
public sealed class Pessoa
{
public string Nome { get; set; }
public void Comer()
{
}
}
|
Internal |
Package |
Apenas as classes que fazem parte do mesmo assembly
(executável, DLL) podem acessar esta classe ou método.
No caso do Java as que fazem parte do mesmo “Pacote”.
//na declaração daclasse
internal class Pessoa
{
//na declaração de uma propriedade
internal string Nome { get; set; }
//na declaração deum método
internal void Comer()
{
}
}
|
Protected |
Protected |
Apenas as classes filhas podem herdar estes métodos.
É visível apenas na classe pai e nas filhas.
Não são visíveis publicamente.
public class Pessoa
{
//na declaração de uma propriedade
protected string Nome { get; set; }
//na declaração deum método
protected void Comer()
{
}
}
|
Internal Protected |
– |
É a junção de Internal e Protected.
Isso quer dizer que apenas as classes do mesmo assembly
podemver seus métodos e herdar suas características.
class Pessoa
{
//na declaração de uma propriedade
internal protected string Nome { get; set; }
//na declaração deum método
internal protected void Comer()
{
}
}
|
Abstract |
Abstract |
Declaram quea classe ou método será abstrato.
Isso quer dizer que o método deverá ser implementado na classe filha.
Classes abstratas não podem ser criados como
“novo objeto” só podem ser herdadas.
//na declaração daclasse
abstract class Pessoa
{
//na declaração de uma propriedade
public abstract string Nome { get; set; }
//na declaração de um método
public abstract void Comer();
}
|
Interface |
Interface |
Declara quea classe possui apenas a assinatura dos métodos e propriedades.
Todos os seus métodos e propriedades deverão ser implementados.
//na declaração da interface
public interface Pessoa
{
//interface apenas implementam a
//assinatura da propriedade
string Nome { get; set; }
//interface apenas implementam a
//assinatura dos métodos
void Comer();
}
|
Virtual |
Virtual |
Declara que o método/ propriedade pode ser sobrescrito (override)
//na declaração daclasse
public class Pessoa
{
//na declaração da propriedade
public virtual string Nome { get; set; }
//na declaração do método
public virtual void Comer() { }
}
|
Void |
Void |
Indica que o método não tem retorno.
public class Pessoa
{
//na declaração do método indica que
//não tem retorno
public virtual void Comer() { }
//Este método tem retorno não podemos
//usar o VOID e sim o tipo de retorno
public virtual Boolean Sonhar()
{
//retorna true se foi possível sonhar
return true;
}
}
|
Com isso temos uma visão geral dos modificadores mais comuns. Claro. Posso ter esquecido de alguns. 🙂
Estes modificadores podem ser combinados de acordo com a necessidade. Mas isso você irá aprender com o tempo, aqui o intuito é explicar o que são eles e para que servem.
Construtores e Destrutores:
O construtor é um método utilizado para inicializar os objetos da classe quando estes são criados.
Este método possui o mesmo nome da Classe e não tem nenhum tipo de retorno, nem mesmo void.
No construtor podemos iniciar todos os outros objetos e propriedades, ele será sempre chamada ao iniciar o objeto.
O destrutor é chamado quando o objeto é descarregado da memória.
Neste método podemos descarregar todos os outros objetos que usamos durante o tempo de vida da classe em memória
public class Pessoa
{
//o Nome da pessoa será iniciado quando construtor for chamado
public string Nome { get; set; }
//construtor sem parâmetros
public Pessoa()
{
//aqui o nome da pessoa é vazio
Nome = "";
}
//construtor com parâmetros
public Pessoa(string _nome)
{
//aqui o nome da pessoa é o mesmo do parâmetro _nome
Nome = _nome;
}
//aqui o destrutor
~Pessoa()
{
//podemos limpar os nossos objetos
Nome = null;
}
}
Atributo e Propriedade:
Muitas pessoas dizem que atributos e propriedades são às mesmas coisas. Eu costumo dizer que não.
Atributos são variáveis que guardam os valores das propriedades, e as propriedades são as qualidades de nossas classes visíveis ao mundo externo.
Veja:
public class Pessoa
{
//esta declaração é um atributo, pois armazena o valor da propriedade Nome
//normalmente são visíveis apenas local.
private string mNome = "";
//o Nome é uma propriedade.
//normalmente são públicas
public string Nome
{
// aqui usamos o atributo mNome para retornar o valor da propriedade
get { return mNome; }
// aqui usamos o atributo mNome para salvar o valor da propriedade
set { mNome = value; }
}
}
Métodos:
Os métodos serão os “verbos”, as ações que nossos objetos podem executar.
public class Pessoa
{
public void Andar()
{ }
public void Comer()
{ }
public void Falar()
{ }
public Boolean Sonhar()
{
return true;
}
}
|