Buscar

Contrutores e Destrutores

Prévia do material em texto

Construtores e Destrutores
Programação Orientada por Objetos
Baseado no material:
- Dos professors João Caram , Hugo Bastos e Anna Tostes
- Da Apostila de C# e Orientação a Objetos da K19 Treinamentos
Classes e Objetos em C#
Declarar uma classe:
Declarar um objeto:
class Conta { // atributos
public int numero ;
public double saldo ;
public int agencia ;
}
Conta C = new Conta();
Classes e Diagramas UML
• O diagrama UML de uma classe é composto pelo 
nome da mesma e pelos atributos e métodos que ela 
define. 
• Todos os objetos criados a partir da classe Conta terão 
os atributos e métodos mostrados no diagrama UML.
• Os valores dos atributos de dois objetos criados a 
partir da classe Conta podem ser diferentes.
Classes e Diagramas UML
Métodos C#
 Método:representa uma ação
class Conta { // atributos
public int numero ;
public double saldo = 0 ;
public int agencia ;
// metodos
public void Deposita ( double valor ) {
saldo += valor ;
}
public void ImprimeExtrato ( ) {
....
static void Main( string[ ] args) {
double x;
.....
Conta C = new Conta ();
C.Deposita (x) ;
6
Cláusula this
• Se refere ao objeto corrente
• usado normalmente para resolução de problemas de escopo
class Data {
private int mes, dia, ano; 
public Data(int mes, int dia, int ano) {
this.mes = mes; this.dia = dia; this.ano = ano;
}
}
Métodos em C#
• Método é um membro de uma classe que permite 
implementar uma ação. 
• Consiste de um cabeçalho (contém um atributo, um 
modificador, um tipo de retorno, um nome do membro 
e uma lista formal de parâmetros) e um corpo (bloco 
de declarações). 
• O C# inclui 8 modificadores.
Modificadores de visibilidade
• private: somente a classe incluída pode acessar o objeto, 
método ou variável.
• public: todos têm acesso. 
• protected: São apenas visíveis para as classes derivadas por 
meio de herança.
• internal: acesso livre somente dentro de um assembly (DLL 
ou EXE) correspondente ao JAR do Java. Fora do assembly
da classe é inacessível.
Atributos de Classe
 Atributo compartilhado entre todos os objetos criados: 
armazenado na classe.
 Em geral, são identificados pela palavra-chave static
 É único para todos os objetos instanciados
 Exemplos:
Contadores
nomes de arquivos compartilhados
Acumuladores
 ...
Métodos de classe
• Métodos que não acessam dados particulares de objetos
• Podem acessar recursos da classe
• Análogos aos atributos estáticos: “funcionam” para a classe ao 
invés de estarem em cada objeto.
•Ex: manipulação de tipos → Int.Parse
•classes “biblioteca” → Math
Modificadores em C#
new
O modificador new em um método indica que o método
derivado é planejado para esconder o método base
public
É usado para garantir que um método ou atributo é acessado por todas
as classes sem qualquer restrição
static
indica que o método pertence somente a classe em questão e
não aos objetos, ou seja, atributos ou métodos terão apenas uma cópia para n 
objetos que o gerarem.
virtual
É usado quando a implementação de um método pode ser mudada por classes 
derivadas
sealed Em um método, previne uma classe derivada sobrescrever um método
override É usado para modificar um método de uma classe base na classe derivada
abstract Em um método, indica que o método não contém implementação
extern Indica que o método é implementado externamente
Sobrecarga (Overloading)
Ocorre quando métodos são definidos na mesma classe com o 
mesmo nome, mas a lista de parâmetros dos métodos são 
diferentes. Exemplo:
class Conta {
public double saldo ;
public double limite ;
public void ImprimeExtrato (int dias ){
}
public void ImprimeExtrato () {
this . ImprimeExtrato (15) ;
}
}
Valores padrão em C#
• Pode-se instanciar um objeto e utilizar seus atributos sem 
inicializá-los explicitamente, pois os atributos são inicializados 
com valores padrão.
• Atributos de tipos numéricos são inicializados com 0.
• Atributos do tipo boolean são inicializados com false
• Demais atributos com null (referência vazia).
• A inicialização dos atributos com os valores padrão ocorre na 
instanciação, ou seja, quando o comando new é utilizado.
Construtores
 São métodos especiais responsáveis pela implementação de 
ações necessárias para criar um objeto.
 Construtor padrão (default): Geralmente inicializa todos os 
atributos com null, false ou zero
 Construtor próprio
 Permitem que um determinado trecho de código seja executado 
toda vez que um objeto é criado, ou seja, toda vez que o operador 
new é chamado. 
 Podem receber parâmetros (entrada), mas não devolvem 
(retornam) resposta (saída).
Classes e Objetos
public class Cliente
{
public int produtosAdquiridos;
public readonly bool clienteEspecial;
//Construtor default
public Cliente()
{
if (this.produtosAdquiridos > 250)
this.clienteEspecial = true;
else
this.clienteEspecial = false;
}
}
Inicializado com
false
Construtores
Construtor padrão
• Toda vez que um objeto é criado, um construtor da classe
correspondente deve ser chamado.
• Mesmo quando nenhum construtor for definido explicitamente, há
um construtor padrão que será inserido pelo próprio compilador.
• O construtor padrão não recebe parâmetros e será inserido sempre
• que o desenvolvedor não definir pelo menos um construtor
explicitamente.
• Para instanciar uma classe que não possui construtores definidos no
código fonte, é utilizado o construtor padrão, já que este é inserido
automaticamente pelo compilador.
Construtores
 Construtores-padrão podem ser inapropriados e/ou 
inseguros
 Procure criar seus próprios
Classes e Objetos
Construtores
● Cuidado!!! Ao criar um construtor para a classe, o compilador não cria 
um construtor padrão.
Classes e Objetos
Construtores
Construtores padrão: cuidado!
Classes e Objetos
Construtores
●Ok!
Classes e Objetos
Construtores
Classes e Objetos
Construtor Estático
• Usado para:
• inicializar qualquer dado estático
• Executar uma ação específica necessária apenas uma vez.
• Chamado automaticamente antes da primeira instância ser criada ou 
quaisquer membros estáticos serem referenciados.
Classes e Objetos
Destrutores (Destructors)
• Métodos especiais invocados quando um 
objeto é finalizado.
• Só há um destrutor por classe.
• Destrutor não tem parâmetros.
• Não deve ser chamado diretamente
Destrutores (Destructors)
• Objetivo principal: liberação de recursos usados pelo 
objeto
• Exemplos:
• Memória.
• Arquivos.
• conexões de rede, bancos de dados, etc.
Destrutores
• Algumas linguagens OO possuem um “coletor 
de lixo” (garbage collector)
• Garbage collector: retira automaticamente da 
memória objetos não referenciados: 
• “Limpa a memória sozinho”
Destrutores
C++
~nomeDaClasse(){
//seu código aqui
}
Java: não implementa destrutores
Destrutores
C#
- Existem, mas são chamados automaticamente
- Na verdade, executam um método finalizador da 
classe base.
Destrutores
C#
Chamados pelo coletor de lixo: nunca sabemos 
quando isso acontece.
Pode-se chamar o coletor ?
–Sim, mas cuidado: desempenho

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes