segunda-feira, 11 de abril de 2011

POO (Programação Orientada a Objetos)

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! =)


quarta-feira, 30 de março de 2011

Boas práticas de programação: Modularização

Olá, amigos. =)

Gostaria de iniciar as atividades de meu blog falando desta primordial prática de programação que é a modularização.

O que é: A modularização é dividir as tarefas a serem realizadas (métodos) em menores unidades operantes. Ou seja, ao invés de criarmos um sistema gigantesco extremamente rígido escrito em apenas uma função (a main), vinculamos à main o "pedaço" de todo o código organizado em outra funções, que terão suas tarefas específicas. Vejam o exemplo em C:



Agora sem módulos =)


Prós: Código extremamente organizado, e de fácil manutenção.

Contras: Tarefa trabalhosa de ser feita, e acaba deixando o código com mais linhas.

Enfim, de qualquer maneira a prática da modularização do seu código irá lhe dar vários benefícios, como a possibilidade de isolar funcionalidades em seu programa, deixando-o mais genérico (ou não, caso não queira), e expansível. Além é claro, de um código modularizado permitir a fácil integração de outros desenvolvedores com a sua aplicação.

Críticas são bem-vindas. =)
Abraços.

terça-feira, 29 de março de 2011

Olá mundo!

Ahaha...

Bom, este é meu novo blog. O criei no intuito de postar aqui tudo que aprendo sobre computação em geral (programação, redes, segurança, etc). O nome é do car*#$@!, né? =P

Amanhã começo a postar pois já está tarde.

Abraços.