quinta-feira, junho 21, 2007

Classes e Objetos

Se observarmos nosso meio, quase tudo o que nos cerca podemos chamar de objetos. Até mesmo muitas das tarefas e ações que fazemos são executadas sobre objetos ou, são tarefas que se relacionam a objetos. Carros, livros, copos, roupas, dinheiro... Por vezes os objetos são compostos por outros objetos... Nós humanos pensamos e lidamos com objetos naturalmente. Para quase todos objetos podemos atribuir, ou reconhecer, características, como: cor, tamanho, forma etc. Para outros objetos podemos inclusive atribuir comportamentos, ou funções, como locomoção, alimentação e outras várias.

Um modelo de objetos busca capturar a estrutura estática de um sistema mostrando os objetos existentes, seus relacionamentos, e atributos e operações que caracterizam cada classe de objetos. É através do uso deste modelo que se enfatiza o desenvolvimento em termos de objetos ao invés de mecanismos tradicionais de desenvolvimento baseado em funcionalidades, permitindo uma representação mais próxima do mundo real [1].

A tecnologia da orientação a objetos permite aos designers de sistemas construir estruturas com somente de dados, dados-e-funções, ou somente funções [2]. Dessa forma reduzindo custo, diminuindo o acoplamento e permitindo um maior reaproveitamento de código.

Usando a abordagem de entendimento por exemplos, vamos imaginar que estamos diante de um monitor de computador (ou de um console de vídeo game) que mostre, por exemplo, uma tartaruga numa determinada ação, correndo, ou melhor, vagarosamente se locomovendo. Obviamente que esta deve ser uma tartaruga virtual. Vamos chamá-la de um objeto virtual, algo que foi programado, ou seja, descrito através de um software que animava e propiciava aparência (cor e forma) a este objeto, a esta tartaruga virtual.

Com base no descrito acima e, considerando que o programador usou a abordagem de orientação a objetos no desenvolvimento do seu programa, este programador descreveu em software os estados (as características) e comportamentos (as tarefas) possíveis de uma tartaruga virtual [1].

Referência Bibliográfica

[1] http://www.dca.fee.unicamp.br/cursos/POOCPP/node9.html

[2] Cockburn, Alistair, Surving Object-Oriented Projects – The Agile Software Development

[3] http://www.ipipan.gda.pl/%7Emarek/objects/faq/oo-faq-S-1.3.html#S-1.3

[4] Booch, Grady. Object-Oriented Design With Applications. Benjamin Cummings.

[5] http://dfm.ffclrp.usp.br/~evandro/ibm1030/intro_classe/clas_obj.html

[6] Vicenzi, Amauri Marcelo Rizzo. Tese do instituto de Ciências Matemáticas da Computação – ICMC-USP, maio 2004

[7] http://www.dca.fee.unicamp.br/cursos/PooJava/polimorf/index.html

[8] http://www.dca.fee.unicamp.br/cursos/PooJava/polimorf/latebind.html

[10] http://www.dca.fee.unicamp.br/cursos/POOCPP/node15.html

[11] http://www.dca.fee.unicamp.br/cursos/POOCPP/node7.html

[12] Hohmann, Luke. Beyond Software Archtecture – Creating and Sustainning Winning Solutions

[13] Larman, Graig. Yutilizando UML e Padrões – Uma introdução à análise de ao projeto orienteado a objetos.

[14] Booch, G. Object Solutions: Managing the Object-Oriented Projetc.