quinta-feira, julho 27, 2006

Aula 1

AULA 01

Um objeto é uma coleção de atributos e/ou uma coleção de métodos.

->Os atributos de um objeto representam sua estrutura.
->Os métodos de um objeto acessão seus atributos e representam o comportamento do objeto.

Uma classe é a descrição de todos os stributos e todos os métodos de um determinado tipo de objeto.

Um objeto é uma instância de uma classe. Um objeto de uma classe conterá durante toda sua vida os atributos e métodos descritos na classe.

Uma mensagem é uma solicitação feita à um objeto para que este execute uma das operações definidas nba classe do objeto.

->Genéricamente o formato de uma mensagem é x.m(args), onde x é uma referência ao objeto receptor da mensagem; m é o seletor da mensagem; args é a lista(possívelmente vazia ) de argumentos da mensagem.
->O obejeto referanciado por x invocando o método m, definida em sua classe, cujos parâmetro casam em numero e tipo com os argumentos da mensagem. Este mecanismo é denominado aclopamento mensagem-método.
->Em programção orientada à objetos a computação ocorre em um universo contituido de objetos que trocam mensagens entre si, dentro deste universo objetos são criados, possuem um tempo de vida ultíl e são destruuidos dentro da computação.


Construção e Destruição de Objetos em C++

Seja a classe X:

struct X
{
int a;
void m(int);
};

Objetos em C++ podem ser criados: estática e dinamicamente.

Criar um objeto significa:
1) alocar memória para armazenamento dos atributos do objeto(declarados em sua classe) e, em determinados casos, imformações sobre os tipos dos objetos.
2)executar operações responsáveis pela inicialização dos odjetos(atribuir valores iniciais a atributos, enviar mensagens a outros objetos, alocar memória para uso interno, abrir arquivos,etc). Essas operações são definidas em métodos especias da classe do objeto chamados construtores.

Para criar estáticamente um objeto da classe X basta declarar:

X x;

A área de memória ocupada pelo objeto x é alocada estáticamente no segmento de dados(se a declarção for global) ou no segmento de pilha(se a declaração for local).
No primeiro caso o tempo de vida do objeto é igual ao tempo de vida do programa e seu escopo é global. No segundo caso o tempo de vida e o escopo são restritos ao bloco(tudo q começa{}) do objeto instanciado.
Alocada a memória para o objeto um método construtor deve ser invocado para sua inicialização, poprém na classe x nenhum construtor é declarado. Neste e somente neste caso o compilador provê um construtor automaticamente. Este não possui tipo de retorno, e tem nome identico ao da classe(aliás como todos os construtores em C++) e não possui parâmetros. Este construtor e chamado "default". O construtor default provido pelo compilador no caso da classe X não faz nada. É como se tivessemos declarado uma classe:

struct X
{
X(){};
int a;
void m(int);
};



Um outro tipo de contrutor em C++ é chamado construtor especial, este toma como argumento uma referência constante para um objeto da própria classe:

struct X

{

...

X (const X&);

...

}

Um construtor de cópia deve implementar a semântica de cópia para os objetos da classe. Se nenhum construtor de cópia é declarado, o compilador sempre provê um, cuja semântica de cópia é "shallow_copy"(cópia rasa), isto é, uma cópia membro a membro dos atributos do argumento passado ao contrutor para os atributos do objeto sendo construído.

Obs. Cópia rasa só é distinta de cópia profunda("deep_copy") para variáveis do tipo ponteiro ou referência. Seja então o ponteiro

X* p;

Uma cópia rasa de 'p' é um endereço cujo valor é o mesmo endereço de 'p', ou seja, uma cópia rasa de 'p' aponta para o mesmo objeto que 'p' aponta. Uma cópia profunda de 'p' é um endereço que aponta para uma cópia do objeto para o qual 'p' aponta, ou seja, 'p' e sua cópia profunda apontam para dois objetos idênticos.

Um objeto criado estáticamente é destruido automaticamente pelo programa quando seu escopo termina. A destruição de um objeto envolve:

1)Executar operações de finalização do objeto(liberação de memória para uso interno, fechamento de arquivos, etc, isto é,limpeza da cas). Essas operações são codificadas em um método especial definido na classe do objeto, chamado destrutor. Se o destrutor não é declarado o compilador provê.
2)Liberação da memória ocupada pelo objeto.

1 comentários:

Anônimo disse...

Aeeeeeeeeeeeee
agora da pra te chiga aki!!!

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Justin Bieber, Gold Price in India