Programação Orientada a Objetos/Classes e Objetos: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Wbrito (discussão | contribs)
Wbrito (discussão | contribs)
Sem resumo de edição
Linha 1:
{{esboço}}
Uma forma de se entender '''Classes''' e '''Objetos''' é comparando aos termos da programação estruturada '''tipos''' e '''variáveis''' (ponteiros, na verdade, mas veremos isso mais adiante).
 
== Classes ==
Por exemplo, na linguagem de programação C, uma declaração tem a seguinte forma:
 
Uma '''classe''' é uma estrutura que abstrai um conjunto de objetos com características similares. Uma classe define o comportamento de seus objetos - através de '''métodos''' - e os estados possíveis destes objetos - através de '''atributos'''.
<source lang="C">
int x = 10;
</source>
 
Em outras palavras, uma classe descreve os serviços oferecidos por seus objetos e quais informações eles podem armazenar.
Onde ''int'' é o tipo, ''x'' é a variável, e '' = 10'' é a sua inicialização. Em programação orientada a objetos, esta declaração poderia ser:
 
Classes não são diretamente suportadas em todas as linguagens, e são necessárias para que uma linguagem seja orientada a objetos.
<source lang="C">
Integer var_x(10);
</source>
 
em que ''Integer'' é a classe, ''var_x'' é o objeto e ''(10)'' é uma forma de inicializar o objeto com o valor ''10''.
 
Um '''objeto''' é mais do que apenas uma variável ou uma estrutura, assim como uma '''classe''' é mais do que um tipo; a diferença fundamental é que a eles estão associados '''métodos''' de forma natural.
 
No exemplo acima, à variável ''x'' podemos apenas aplicar funções que recebem inteiros como argumento, assim como para alterar o valor de ''x'' devemos usar instruções do tipo ''x = f(...)'' em que ''f'' é uma função que retorna um inteiro.
 
Por outro lado, o '''objeto''' ''var_x'' tem várias outras possibilidades. Dependendo de como a '''classe''' ''Integer'' tenha sido implementada, pode-se extrair informações sobre o número de bytes de ''var_x'' (de modo que ''var_x'' não precise ter um teto - ou seja, temos inteiros de precisão limitada apenas à capacidade de armazenamento e processamento da máquina), ou fazer conversões entre ''var_x'' e outras classes - como converter ''var_x'' para um número racional ou um conjunto.
 
== Classes ==
Uma '''classe''' representa um conjunto de objetos com características afins. Uma classe define o comportamento dos objetos através de seus métodos, e quais estados ele é capaz de manter através de seus atributos.
 
'''Subclasse''' é uma nova classe originada de sua classe pai.
 
== Objetos ==
 
Um '''objeto''', na vida real, é qualquer coisa a qual pudermos dar um nome.
 
Linha 38 ⟶ 25:
 
O conjunto de valores dos atributos de um determinado objeto é chamado de estado.
 
 
== Comparação com linguagem estruturada ==
 
Uma forma de se entender '''Classes''' e '''Objetos''' é comparando aos termos da programação estruturada '''tipos''' e '''variáveis''' (ponteiros, na verdade, mas veremos isso mais adiante).
 
Por exemplo, na seguinte declaração (usando linguagem de programação C):
 
<source lang="C">
int x = 10;
</source>
 
''int'' é o tipo e ''x'' é a variável. Isso é semelhante a seguinte declaração (usando C++ orientado a objetos):
 
<source lang="C">
Integer var_x(10)y;
</source>
 
em queonde ''Integer'' é a classe, ''var_x''(tipo éde o objetodado), e ''(10)y'' é uma forma de inicializar o objeto com(a o valor ''10''variável).
 
UmEntretando, um '''objeto''' é mais do que apenas uma variável ou uma estrutura, assim comoe uma '''classe''' é mais do que um tipo; a diferença fundamental é que a eles estão associados '''métodos''' de forma natural.
 
No exemplo acima, à variável ''x'' podemos apenas aplicar funções que recebem inteiros como argumento, assim como para alterar o valor de ''x'' devemos usar instruções do tipo ''x = f(...)'' em que ''f'' é uma função quecom retornatipo umde retorno inteiro.
 
Por outro lado, o '''objeto''' ''var_xy'' tem várias outras possibilidades. Dependendo de como a '''classe''' ''Integer'' tenha sido implementada, pode-se extrair informações sobre o número de bytes de ''var_xy'' (de modo que ''var_xy'' não precise ter um teto - ou seja, temos inteiros de precisão limitada apenas à capacidade de armazenamento e processamento da máquina), ou fazer conversões entre ''var_xy'' e outras classes - como converter ''var_xy'' para um número racional ou um conjunto.
 
 
== Ver também ==
 
{{wikipedia|Classe (programação)}}
* Classes e objetos em [[Programar em C++/Classes|C++]]