Você está na página 1de 5

Objetos Um objeto, na vida real, qualquer coisa a qual pudermos dar um nome.

. Podemos dizer que um objeto algo quem tem caractersticas, aes, possui comportamento, uma identidade, distingui-se um do outro. Um objeto, em programao orientada a objetos, uma instncia (ou seja, um exemplar) de uma classe. Um objeto capaz de armazenar estados atravs de seus atributos e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos.

Classes Uma classe uma abstrao que define um tipo de objeto e o que objetos deste determinado tipo tm dentro deles (seus atributos) e tambm define que tipo de aes esse tipo de objeto capaz de realizar (mtodos). Note que uma Classe no tem vida, s um conceito. Mas os Objetos (animais, serem humanos, pssaros, etc.) possuem vida. O seu cachorro rex um Objeto (ou instncia) da classe Cachorro. A classe Cachorro no pode latir, no pode fazer xixi no poste, ela apenas especifica e define o que um cachorro. Mas Objetos do tipo Cachorro, estes sim podem latir, enterrar ossos, ter um nome prprio, etc.

Abstrao Por exemplo, imaginamos a abstrao referente classe Animais. H vrias entidades na classe Animais como Anfbios, Rpteis e Mamferos que so tambm subclasses da classe Animais, onde h objetos que contm cada subclasse como Ser-humano, Jacar e outros. Uma classe abstrata desenvolvida para representar entidades e conceitos abstratos. A classe abstrata sempre uma superclasse que no possui instncias. Ela define um modelo (template) para uma funcionalidade e fornece uma implementao incompleta - a parte genrica dessa funcionalidade - que compartilhada por um grupo de classes derivadas. Cada uma das classes derivadas, completa a funcionalidade da classe abstrata adicionando um comportamento especfico.

Atributos Atributos so caractersticas de um objeto. Basicamente a estrutura de dados que vai representar a classe. Exemplos: um objeto da classe "Funcionrio" teria como atributos "nome", "endereo", "telefone", "CPF", etc. O conjunto de valores dos atributos de um determinado objeto chamado de estado. Os Atributos so os elementos que definem a estrutura de uma Classe. Os atributos tambm so conhecidos como variveis de classe, e podem ser divididos em dois tipos bsicos: atributos de instncia e de classe. Os valores dos atributos de instncia determinam o estado de cada objeto. Um atributo de

classe possui um estado que compartilhado por todos os objetos de uma classe. Atributos de classe podem ser chamados tambm de atributos estticos ou constantes. Um atributo um dado para o qual cada objeto tem seu prprio valor. Atributos , basicamente, a estrutura de dados que vai representar a classe.

Propriedades Enquanto os Atributos so variveis que guardam os valores das propriedades, as propriedades so as qualidades de nossas classes visveis ao mundo externo.

Mtodos Um mtodo nada mais que o equivalente a um procedimento ou funo, com a restrio que ele manipula apenas suas variveis locais e os atributos que foram denidos para a classe. Um mtodo uma sub-rotina que executada por um objeto ao receber uma mensagem. Os mtodos determinam o comportamento dos objetos de uma classe e so anlogos a funes ou procedimentos da programao estruturada. O envio de mensagens (chamada de mtodos) pode alterar o estado de um objeto.

Mtodos Sobrecarregados A sobrecarga de mtodo permite a existncia de vrios mtodos de mesmo nome, porm com assinaturas levemente diferentes ou seja variando no nmero , tipo de argumentos , no valor de retorno e at variveis diferentes. Ficar a cargo de o compilador escolher de acordo com as listas de argumentos os procedimentos ou mtodos a serem executados. A importncia de permitir a sobrecarga de mtodos no reside em uma mera convenincia para evitar que se tenha que escolher e usar nomes novos para cada definio, ou para evitar conflitos entre nomes existentes em um determinado escopo e, assim, evitar a "poluio" do espao de nomes usados em programas.

Construtores Um construtor tem uma funo especial: ele serve para inicializar os atributos e executado automaticamente sempre que voc cria um novo objeto. Este mtodo possui o mesmo nome da Classe e no 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.

Quando voc especifica os atributos de uma classe, voc apenas diz ao sistema algo como "objetos desta classe Pessoa vo ter uma varivel chamada Nome que do tipo String, uma varivel chamada idade que do tipo inteiro, etc.". Mas estas variveis no so criadas, elas s sero criadas no construtor. O construtor tambm pode receber parmetro, desta forma, voc pode passar para o construtor uma String contendo o nome da Pessoa que voc est criando, sua idade, etc.

Destrutores O destrutor chamado quando o objeto descarregado da memria. Neste mtodo podemos descarregar todos os outros objetos que usamos durante o tempo de vida da classe em memria. Destrutor um membro de uma classe, um mtodo, invocado quando a classe deve ser destruda. utilizado, normalmente, para liberar a memria alocada dinamicamente pela classe e para eliminar as possveis referncias classe, quando ela no mais existir. No recebe parmetros de entrada ou de sada. Em linguagens de programao com o recurso Garbage Collector (coletor de lixo), que retiram da memria os objetos no referenciados, no h mtodo destrutor, uma vez que o Garbage Collector faz o trabalho de destruio dos objetos.

Herana Voltando a idia das classes na Biologia: um ser humano um animal. Ele tem todas as caractersticas (atributos) e pode realizar todas as aes (mtodos) de um animal. Mas, alm disso, ele tem algumas caractersticas e aes que s ele pode realizar. Em momentos como este, utilizada a herana. Uma classe pode estender todas as caractersticas de outra e adicionar algumas coisas a mais. Desta forma, a classe SerHumano ser uma especializao (ou subclasse) da classe Animal. A classe Animal seria a classe pai da serHumano, e logicamente, a classe SerHumano seria a classe filha da Animal. Uma classe pode sempre ter vrios filhos, mas normalmente as linguagens de programao orientadas a objetos exigem que cada classe filha tenha apenas uma classe pai. Um exemplo um pouco mais prximo da nossa realidade: vamos supor que estamos desenvolvendo um sistema para um banco. Nosso banco possui clientes que so pessoas fsicas e pessoas jurdicas. Poderamos criar uma classe chamada Pessoa com os seguintes atributos: Nome, Idade. Em seguida, criamos 2 classes que so filhas da classe Pessoa, chamadas PessoaFisica e PessoaJuridica. Tanto a classe PessoaFisica como a PessoaJuridica herdariam os atributos da classe Pessoa, mas poderiam ter alguns atributos a mais. A classe PessoaFisica pode ter, por exemplo, o atributo RG enquanto a classe PessoaJuridica poderia ter o atributo CNPJ.

Dessa forma, todos os objeto da classe PessoaFisica ter como atributos: Nome, Idade, RG. E todos os objetos da classe PessoaJuridica tero os seguintes atributos: Nome, Idade, CNPJ.

Encapsulamento Encapsulamento vem de encapsular, que em programao orientada a objetos significa separar o programa em partes, o mais isoladas possvel. A idia tornar o software mais flexvel, fcil de modificar e de criar novas implementaes. Para exemplificar, podemos pensar em uma dona de casa (usurio) utilizando um liquidificador (sistema). O usurio no necessita conhecer detalhes do funcionamento interno do sistema para poder utiliz-lo, precisa apenas conhecer a interface, no caso, os botes que controlam o liquidificador. Uma grande vantagem do encapsulamento que toda parte encapsulada pode ser modificada sem que os usurios da classe em questo sejam afetados. No exemplo do liquidificador, um tcnico poderia substituir o motor do equipamento por outro totalmente diferente, sem que a dona de casa seja afetada - afinal, ela continuar somente tendo que pressionar o boto. O encapsulamento protege o acesso direto (referncia) aos atributos de uma instncia fora da classe onde estes foram declarados. Esta proteo consiste em se usar modificadores de acesso mais restritivos sobre os atributos definidos na classe. Depois devem ser criados mtodos para manipular de forma indireta os atributos da classe. Encapsular atributos tambm auxilia a garantir que o estado e o comportamento de um objeto se mantenham coeso. Por exemplo, no caso da classe Semaforo poderamos ter um mtodo de acesso chamado lerCor(), e um modificador chamado proximaCor(). O estado mantido pois os usurios da classe no podem alterar as cores de um semforo ao seu bel prazer e, por exemplo, fazer a seguinte troca de cores: vermelho-amarelo-vermelho. comum usar o padro get<nomeDoAtributo> para o mtodo que retorna o valor atual do atributo e set<nomeDoAtributo> para o mtodo que modifica o valor de um atributo do objeto.

Polimorfismo O polimorfismo caracterizado quando duas ou mais classes distintas tem mtodos de mesmo nome, de forma que uma funo possa utilizar um objeto de qualquer uma das classes polimrficas, sem necessidade de tratar de forma diferenciada conforme a classe do objeto. Uma das formas de implementar o polimorfismo atravs de uma classe abstrata, cujos mtodos so declarados, mas no so definidos, e atravs de classes que herdam os mtodos desta classe abstrata. Definimos Polimorfismo como um princpio a partir do qual as classes derivadas de uma nica classe base so capazes de invocar os mtodos que, embora apresentem a mesma assinatura, comportam-se de maneira diferente para cada uma das classes derivadas.

O Polimorfismo um mecanismo por meio do qual selecionamos as funcionalidades utilizadas de forma dinmica por um programa no decorrer de sua execuo. Com o Polimorfismo, os mesmos atributos e objetos podem ser utilizados em objetos distintos, porm, com implementaes lgicas diferentes. Por exemplo: podemos assumir que uma bola de futebol e uma camisa da seleo brasileira so artigos esportivos, mais que o clculo deles em uma venda calculado de formas diferentes. Outro exemplo: podemos dizer que uma classe chamada Vendedor e outra chamada Diretor podem ter como base uma classe chamada Pessoa, com um mtodo chamado CalcularVendas. Se este mtodo (definido na classe base) se comportar de maneira diferente para as chamadas feitas a partir de uma instncia de Vendedor e para as chamadas feitas a partir de uma instncia de Diretor, ele ser considerado um mtodo polimrfico, ou seja, um mtodo de vrias formas.