Saudações,
venho postar aqui hoje o que mais tenho visto ultimamente. É a tão falada programação orientada a objeto.
(Os exemplos usados aqui seguem o padrão do Java, mas devido a sua sintaxe super parecida com C++/C# todas as linhas serão mutualmente inteligíveis).
Antes, uma imagem muito legal que achei na internet que ilustra muito bem as três linguagens orientadas a objetos (Java, C#, Ruby), e a linguagem C como a estruturada.

O que é: É um paradigma de programação que consiste na montagem de estruturas de dados (objetos) que tem um estado (variáveis de instância), e um comportamento próprio (métodos/funções). Há semelhança com a struct da linguagem C, já que ambos podem ter variáveis, mas não funções, apenas classes tem funções e variáveis.
Então você me pergunta... O que é uma classe?
Oras, é um objeto! Mas struct também é um objeto. Pois é, de certa forma quase toda estrutura de dados é um objeto. Mas não vamos entrar neste dilema. rs
O que importa é que uma classe é um objeto, e uma classe pode ter variáveis e funções (métodos). Porém, no que uma função iria ajudar em um objeto?
Imaginemos que temos um objeto gato em nosso programa. Vamos declara-lo?
class Gato{
float peso;
float altura;
(continua...) }
Certo, nas structs você tem básicamente o mesmo, uma estrutura de dados, com diversos dados de diferentes tipos dentro. Mas e se você quiser que a sua estrutura faça algo? Daí você terá de criar uma função que possa manipular a estrutura gato, e que será completamente independente da estrutura. Pois é, terrível isto. Na programação orientada a objetos isto é feito de uma forma simples. Vejamos:
class Gato{
float peso;
float altura;
void miar(){
//Comandos para fazer o gato miar.
}
void comer(){
//Comandos para fazer o gato comer.
}
}
Muito bom. Agora fica bem intuitivo. Já que as funções são membros da "estrutura" (que agora é chamada de "classe"), você pode alcança-las através do próprio objeto gato.
Gato snowball = new Gato; //O snowball acaba de "nascer".
snowball.miar(); //Fará o snowball miar.
snowball.comer(); // Fará o snowball comer.
Gato gatinho_dorgas = new Gato; // O gato "gatinho_dorgas" acabou de "nascer".
gatinho_dorgas.miar(); // Faço especificamente o "gatinho_dorgas" miar.
gatinho_dorgas.comer(); // Faço especificamente o "gatinho_dorgas" comer.
Ou seja, da mesma forma que acessamos os membros de uma struct em C, acessamos os métodos (funções) em C++/Java/C#/etc,etc...
Legal!! Já sei tudo de OO! Eu sou fo%@ eu vou trabalhar na Nokia!
rs... Calma, campeão! Isto é só o início. Existem muitos outros conceitos sobre OO. Como por exemplo a herança, polimorfismo, classes abstratas, grupos de acessos,métodos virtuais, e muito mais!
Deixarei este assunto para tratar melhor em outra postagem.
Abraços! =)
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.