Extenda a dir.java para executar iterativamente, acrescentando o comando del.
Use e estude Console.java
Replace these every slider sentences with your featured post descriptions.Go to Blogger edit html and find these sentences.Now replace these with your own descriptions.This theme is Bloggerized by Lasantha - Premiumbloggertemplates.com.
Replace these every slider sentences with your featured post descriptions.Go to Blogger edit html and find these sentences.Now replace these with your own descriptions.This theme is Bloggerized by Lasantha - Premiumbloggertemplates.com.
Replace these every slider sentences with your featured post descriptions.Go to Blogger edit html and find these sentences.Now replace these with your own descriptions.This theme is Bloggerized by Lasantha - Premiumbloggertemplates.com.
C++ implementa templates os quais podem ser usados em classes e
funções. Para exemplificar seu uso em classes, sejam as classes
abaixo, as quais representam um elemento de uma lista linearmente
encadeada e a lista propriamente dita:
Ex.
Aula 02
Exemplo
{
X x;
}
Alocação Dinâmica
Em C++ um objeto é criado dinâmicamente, com o operador new o qual retorna o endereço da região de memória do primeiro byte ocupado pelo objeto.
X* p=new X(); ou X *p=new X;
Objetos criados dinâmicamente residem no heap do sistema,que é a área destinada a um programa pelo SO(sistema operacional) para alocação dinâmica(em tempo de execução de memória). Ao contrário de objetos estáticos, os objetos criados dinâmicamente devem ser explicitamente destruidos, através do operador delete. Ao contrário de new, delete invoca o destrutor e em seguida libera a memória do heap ocupada pelo objeto.
delete p;
Obs. Manipulação explicita de ponteiros é uma das causas mais comuns de erros em C++(coisa que não existe em Java).
O tempo de vida útil de um objeto começa imediatamente após sua criação e dura até o instante imediatamente antes de sua instrução. Durante sua vida útil o objeto pode ser usado de duas maneiras:
1- Acessando um atributo do objeto:
int a=x.a; //acesso de leitura: x.a é um rvalue (valor que esta dp lado direito, não pode ser modificado)
p->a=a; //acesso de escrita: p->a é um lvalue (trabalha com o endereço)
//mesma coisa que a de cima (*p).a=a;
2- Enviando uma mensagem para o objeto:
x.m();
p->m();
Como resposta à mensagem o receptor acopla o método
X::m() //X(qualificador) e X::m(nome qualificado).
Acoplar significa: descobrir na classe do receptor um método cujo nome é o mesmo do seletor da mensagem e cujos parâmetros casam em número e tipo com os argumentos da mensagem, e em seguida invocar tal método. Sintaticamente enviar uma mensagem é similar a acessar um atributo, com a diferença que depois do nome do método vem o par de parênteses com os argumentos da mensagem em seu interior. É como se estivessemos chamando um função para um objeto. Semânticamente porém deve se ter em mente que se esta enviando uma mensagem e que a função a ser invocada é consequência do acoplamento.
Obs. X::m é um nome qualificado sendo o nome simples 'm' o nome de um método(o nome simples de um nome qualificado pode ser o nome de qualquer membro de uma classe). O qualificador de um nome qualificado é um nome de classe que precede o operador de escopo, nesse caso o 'X'. “m é da classe X”
Em C++, o operador de escopo ::a é um nome totalmente qualificado, sendo 'a' um nome declarado globalmente(o qualificador é nulo).
Exemplo
int a;
void f(int a)
{
::a=a;
}
Propriedades da Orientação e Objeto
-> Encapsulamento
-> Herança
-> Polimorfismo
Atributos de Métodos de Classes
Ao contrário de atributo de instância,um atributo de classe não pertence à estrutura de dados de objetos da classe. Há apenas uma cópia do atributo(que pode ser intendido como sendo de propriedade da classe) ao invés de uma cópia para cada objeto da classe. Os objetos da classe compartilham esta cópia única. Em C++ um atributo de classe é definido como modificador "static".
Obs Em C++ a variável uma variável estática declarada em uma classe(geralmente em uma arquivo .h) é definida em um arquivo .cpp.
//
//Início do x.h
//
#include
class X
{
public:
int a, b;
static int sa; //atributo de classe
void f()
{
a=sa;
}
};
//
//Fim do x.h
//
//
//Início do x.cpp
//
#include "x.h"
int X::sa=4;
int main()
{
X x1, x2;
int a=x1.a;
a=X::sa;
x1.sa=3;
printf("Tamanho de x: %d, valor de X::sa: \n", sizeof(x1), X2.sa);
return 0;
}
//
//Fim do x.cpp
//
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.

