Sie sind auf Seite 1von 5

Orientação a Objetos

SUMÁRIO

1. Objetos e Métodos
2. Classes, Instâncias e Mensagens
3. Métodos Constructors e Destructors
4. Encapsulamento
5. Reusabilidade
6. Herança Simples
7. Métodos estáticos e virtuais
8. Polimorfismo
9. Referências Bibliográficas
Orientação a Objetos

Orientação a Objetos

1. Objetos e Métodos

Objeto = é a união inseparável entre uma estrutura de dados e todas as operações (métodos)
associadas a esta estrutura

Uma aplicação orientada a objetos é decomposta em objetos, não em procedimentos


ou subprogramas.
As operações são denominadas MÉTODOS.
Um objeto é composto por uma coleção de dados privados e um conjunto de métodos
que atuam sobre estes dados.

2. Classes, Instâncias e Mensagens

CLASSE: é um grupamento de objetos que revelam profundas semelhanças entre si,


tanto no aspecto estrutural como funcional.
Uma classe pode ser vista como uma declaração de tipo, uma descrição de uma
coleção de possíveis objetos.
Exemplo 1 class ALUNO {
char nome[15]; //variaveis de instancia
float nota;
ALUNO(void); /// constructor
void Leitura; // metodos
void exibe();
};
Objetos: Vera, Hudson, Orlando, Michel, Regiane

Exemplo 2 class CARRO {


char marca[15]; //variaveis de instancia
char modelo[20];
int AnoFabric;
CARRO (void); /// constructor
void Leitura; // metodos
void exibe();
};
Objetos: Monza, Aero Willis, A3, Gol, Fiesta

Podemos Ter diversos objetos criados a partir de uma mesma classe. Esses objetos
terão as mesmas características entre si, descritos pela classe. por isso dizemos que cada um
desses objetos é uma instância desta classe.
Cada objeto é uma instância de uma classe.
Objetos são criados durante a execução do programa, e ocupam espaço na memória.

Variáveis de Instância: são os elementos que compõem a coleção de dados privados


de uma classe.
Orientação a Objetos

Método: um método é ativado pelo envio de uma mensagem ao objeto. O envio de


uma mensagem a um objeto corresponde a uma chamada de uma função. Em ambos os
casos algum trecho de código será executado e provavelmente modificará alguns dados.

3. Métodos Constructors e Destructors


Foram criados 2 tipos especiais de métodos denominados Constructors e destructors
que executam respectivamente as operações de inicialização e finalização de um objeto.
Esses métodos são especialmente úteis para iniciar e desalocar objetos dinâmicos
(ponteiros).
Um constructor é um método especial que inicia o objeto antes que ele seja utilizado.
Um destructor é o oposto do constructor: ele elimina o objeto quando ele não é mais
necessário.

4. Encapsulamento
A capacidade de um objeto possuir uma parte privada é denominada encapsulamento.
Encapsulamento impede o cliente de enxergar os detalhes da sua implementação, o que
denominamos ocultação de informação.
A POO tem por objetivo criar objetos independentes da aplicação. O reuso permite
desenvolver um conjunto de classes que não seja limitado a um único sistema. Exemplo:
classe pessoa, classe mouse, classe janela, classe menu etc
A reusabilidade só pode ser alcançada se as classes forem projetadas e implementadas
com independencia da aplicação.
Esta proteção (ocultação) tem as seguintes regras:
a) apenas os métodos devem ser capazes de modificar o estado interno de um objeto
(ocultação da informação), não deve ser possível acessar o valor armazenado em uma
variável de instância externamente. Toda mudança no estado interno de um objeto deve
ser consequencia de uma mensagem.
b) a resposta a uma mensagem deve ser completamente determinada pelo estado interno
do objeto receptor (independencia de aplicação). Se 2 instâncias de uma mesma classe
possuem o mesmo estado interno, então devem responder a mensagens iguais de forma
idêntica. Isto garante que a resposta a uma mensagem não dependa de fatores externos
ao objeto. Portanto, não devemos acessar variáveis globais da aplicação no interior de
um método. Devemos criar objetos altamente reusáveis, garantindo que seu
comportamento seja independente do ambiente ao redor.
Exemplo Classe DATA

5. Reusabilidade
Com o encapsulamento, o funcionamento de cada classe é independente do resto da
aplicação. Os objetos se tornam reusáveis, isto é, eles podem ser reaproveitados diversas
vezes sem a necessidade de realizar mudanças na implementação.
Uma classe projetada para ser reusável deve ser mais flexível. Isto ocorre porque não
desejamos um objeto que satisfaça os requisitos de uma aplicação particular, mas sim de
uma classe genérica, encapsulando funcionalidade útil em uma grande diversidade de
aplicações.
REUSO: para que classes de objetos possam ser efetivamente reusadas é preciso que
elas estejam disponíveis em HPP (header)., e não junto ao restante do código da
aplicação.
Orientação a Objetos

6. Herança Simples
É comum encontrarmos classes que apresentem um comportamento muito próximo
do que necessitamos em uma aplicação específica, mas que não serão úteis se não formos
capazes de incluir as características particulares exigidas pela aplicação.
Para isto não é necessário alterar o código fonte da classe, nem tampouco refazer
toda a classe. Isto abandonaria os conceitos de abstração (independência da aplicação),
encapsulamento e o principio da reusabilidade.
HERANÇA: permite que uma nova classe seja descrita a partir de outra classe já
existente, herdando suas propriedades. Dizemos que a subclasse herda os métodos e as
variáveis de instância de sua superclasse.
A subclasse deve ser capaz também de adicionar novos métodos e variáveis de
instância aos originais.
Na subclasse é possível redefinir os métodos herdados, isto é, refazer a
implementação do método, sem que a superclasse precise ser modificada.
Embora os nomes dos métodos possam ser duplicados na herança, os nomes da
variáveis de instância NÃO podem.
Assim, uma subclasse pode ser vista como uma especialização de sua superclasse. A
especialização envolve a adição ou modificação de características mas nunca sua subtração.

class CLPessoa { //declaraçao da classe


Pessoa - SuperClasse
private:
char nome[10]; //variaveis de
instancia
CLData D;
public:
CLPessoa(void);
void LePessoa();
void Mostra();
};

class CLEstudante : public CLPessoa { //declaraçao da subclasse Estudante


private:
int RA; //variaveis de instancia ou ATRIBUTOS
float notas[4];
float media;
public:
CLEstudante(void); // constructor
void LeEstudante();
void CalcMedia();
void Mostra();
~CLEstudante(void); // destructor
};
Orientação a Objetos

7. Polimorfismo

• É apenas uma forma simpatica de dizer que uma rotina pode aceitar uma grande
variedade de tipos de objetos.
• Permite que um método aceite como parametro objetos de mais uma classe.

Para isto é necessário construir métodos capazes de receber diversos tipos de objetos como
parâmetros. No entanto, é necessário que o protocolo de suas classes tenham um mínimo de
afinidade (herança).

Estudante Pessoa
Pessoa
Estudante
Estudante

void CLVetPessoa::Insere(CLPessoa *P) // este método é polimórfico


{
if (tl<5)
{
Vetor[tl]=P;
tl++; }
else printf("\n Overflow");
}

Neste exemplo, o método Insere da classe Vetor é polimórfico.


Este método recebe como parâmetro um ponteiro de Pessoa. Como estudante é herança de
Pessoa, permite receber também um ponteiro de Estudante (o inverso não é possível).

Referências Bibliográficas
GOTTFRIED, Byron Stuart. Programando em C. São Paulo, Makron Books., 1993.

HICKSON, Rosangela. Aprenda a programar em C, C++ e C#. Rio de Janeiro: Campus Ed, 2002.

MATEUS, César Augusto. C++ Builder 5 Guia prático. São Paulo: Érica Ed., 2000.

POHL, Ira. C++ para programadores de Pascal. V.2 Rio de Janeiro: Berkeley ed., 1991.

SCHILDT, Herbert. Borland C++ Completo e Total. São Paulo: Makron Books, 1997.

TENENBAUM, Aaron M. e outros; Estruturas de dados usando C: São Paulo: Makron Books, 1995.

WEISKAMP, Keith et al. Programação Orientada para objeto com Turbo C++ . São Paulo: Makron
Books,1993.

WIENER, Richard S. & PINSON, Lewis J. C++ Programação Orientada para objeto – Manual
prático e profissional. São Paulo: Makron, McGraw-Hill, 1991.

Das könnte Ihnen auch gefallen