Para um melhor entendimento deste Artigo veja o Índice (Programação Orientada a Objetos) | |||||||||||||||||||||||||||||||||||||||
Nós, como seres humanos distinguimos estes objetos em três formas de pensamento:
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.
|
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; } }
É isso aí pessoal 🙂
Até o próximo
♦ Marcelo