Buscar

Lista LP1-primeira1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Lista de Exercícios - LP1
É uma estrutura que reúne atributos e métodos e que define o comportamento de um objeto. Uma classe pode dar origem a várias outras ou ser derivada de outras classes. 
Objeto é uma instância de uma classe. É o objeto quem carrega todas as informações definidas pelas classes (métodos e atributos), informações essas necessárias na hora de se instanciar o objeto.
Herança é o ato de compartilhar métodos e atributos de uma classe com outra. Geralmente, usa-se herança para reaproveitar dados. Por exemplo, quando existe uma classe “Polígonos” e é necessária uma especificação da classe “pai”, criando uma classe “Quadrados”. Assim, é possível que a classe “filha”, “Quadrados” possua tanto métodos e atributos da classe “Polígonos” quanto atributos específicos, que pertençam apenas a si.
Na herança pública, todos os atributos continuam com o mesmo nível de acesso. Por exemplo, o que é público na classe base, continua público na classe derivada, assim como o que é protected na classe base, continua protected na classe derivada. Já no tipo de herança privada, todos os atributos da classe pai, viram private na classe filha. Vale ressaltar que os atributos private na classe pai estarão sempre ocultos para classe filha.
O uso de polimorfismo e classes virtuais permite ao programador trabalhar apenas de forma geral, deixando para o ambiente a preocupação com os aspectos específicos. O programador pode fazer com que uma grande variedade de objetos se comporte exatamente como devem se comportar, isso sem nem mesmo conhecer os tipos de objetos. Por exemplo, poderíamos usar uma classe base Shape e adicionar um método virtual draw a tal classe. Usando um ponteiro da classe Shape apontando para objetos de classes derivadas como Circle, Triangle, ao enviar uma mensagem para invocar o método draw, o compilador trataria de escolher o método certo para desenhar a forma do objeto.
Os tipos de encapsulamento servem para privar os dados de uma certa classe a determinados grupos de códigos, i.e., nem todo mundo acessa tudo. São eles: public, protected e private. Quando atributos ou métodos de uma certa classe são do tipo public, qualquer outro método de outra classe pode acessá-los. Quando são protected, apenas classes filhas podem acessar tais dados. Já quando são do tipo private, apenas códigos da própria classe podem acessar os atributos e métodos.
Os métodos construtores sevem para iniciar os dados membros de uma classe, dados esses que são passados pelos objetos, na hora da instanciação ou após serem criados. Os construtores são quem alocam a memória onde os dados são guardados. Os destrutores fazem o inverso, liberam a memória alocada pelos construtores.
Atributos e métodos estáticos podem ser usados para compartilhar o seu valor com quaisquer objetos da classe a que pertecem, já que oculpam o mesmo lugar na memória. Um exemplo seria de um relógio global. Ao criar 3 objetos de uma classe “Hora”, que possui os atributos estáticos “H”, “M”, “S”, que representam, respectivamente, horas, minutos e segundos, os objetos, que seriam “Hora_JP”, “Hora_Recife” e “Hora_Natal” compartilhariam do mesmo espaço de memória das variáveis estáticas. Como, teoricamente, as três cidades representadas pelos 3 objetos possuem o mesmo fuso-horário, ao alterar o valor de variável “H” a partir do objeto “Hora_JP”, os outros dois objetos também teriam a hora alterada, pois “H” é compartilhada entre todos os objetos da classe “Hora”.
 class Singleton{
		Singleton(){};
		static Singleton *Instancia;
public:
		static Singleton *getInstancia();
};
Singleton * Singleton::Instancia = 0;
Singleton * Singleton::getInstancia() {
	
if (Instancia == 0){
 	Instancia = new Singleton;
	}
	return Instancia;
}
Através de herança é possível compartilhar métodos e atributos de uma classe base com uma classe filha. Composição difere pelo fato de ter um objeto instanciado dentro de uma outra classe qualquer. A herança auxilia na especificação de uma certa classe, deixando o código mais enxuto e auxiliando no reuso do código. A composição funciona de forma semelhante, auxiliando de forma parecida no reuso do código, diferenciando apenas que os atributos e métodos da classe base não pertencem à classe filha, como ocorre na herança.
f1 de C2, f1 de C1, f2 de C1 e f1 de C2.

Outros materiais