Tópicos Diversos em C#
Erick Luis Moraes de Sousa
[email protected]
http://forum.gamux.com.br
REVISÃO
Revisão
• Orientação a Objetos:
-
–
–
–
–
–
–
–
Classe;
Objeto/Instância;
Método;
Construtor;
Propriedade;
Herança;
Modificadores de Acesso;
Adendo
• Sobrecarga de métodos ( overloading/overriding ):
–
Processo de re-implementação de um método/operador em uma subclasse;
• Modificadores de Acesso para a herança:
– Virtual:
-
• Métodos/propriedades que possuem o modificador Virtual podem ser re-implementados ao
serem herdados por subclasses;
– Abstract:
• Métodos/propriedades que possuem o modificador Abstract não precisam ser implementados
na superclasse e devem ser obrigatoriamente implementados na subclasse caso a superclasse
tenha o modificador abstract;
– Sealed:
• Não é possível herdar de uma classe/método/propriedade que esteja com o modificador
sealed;
– Override:
• Esse modificador de acesso, quando utilizado em uma subclasse, permite re-implementar
métodos da superclasse;
OBJETIVOS
Objetivos
• Diferença entre valor e referência em C#;
• Delegates;
• Tratamento de Exceções.
7
Teoria
Prática
Teoria
Valor e
Referência
Conceito
Exceções
Usos
Delegates
Conceito
• Valor:
•
Quando uma variável é passada para um método por valor, o sistema operacional cria
uma cópia da mesma que é a utilizada pelo método. Modificações nesta cópia não
alteram a variável original;
• Referência:
•
Quando uma variável é passada por referência para um método, o sistema operacional
não cria uma cópia. Caso a mesma sofra alguma modificação dentro do método, as
mudanças irão se manter e alterar a variável “original”;
•
Objetos são passados como referência por padrão;
•
Structs são passadas como valor por padrão;
•
Keyword específicas: ref , out.
10
Usos
• Keyword ref:
– Um valor é passado como referência e seu valor deve necessariamente ser inicializado;
• Keyword out:
– Um valor é passado como referência, porém o seu valor não precisa ser inicializado;
• Declaração de um método que recebe um inteiro i por referência:
public void meuMetodo ( ref int i )
{
i++;
}
• Análogo para a keyword out.
11
Teoria
Valor e
Referência
Exceções
Utilidades e
Motivações
Delegates
Try/Catch
Utilidades e Motivações
13
Utilidades e Motivações
• Principal objetivo:
• Verificar erros em tempo de execução que fariam com que o seu
programa terminasse de forma inesperada;
• Um olhar na linguagem C:
• Não possui tratamento de exceções;
• Casos excepcionais são tradados a parte:
•
•
•
Retorno do Malloc;
Tentativa de abrir um arquivo;
Divisão por zero;
• Garante um programa mais robusto e estável!
14
Try/Catch
• Tenta executar um trecho de código que possa causar uma exceção;
• Se o código gerar alguma exceção, o programa não é abortado. O mesmo
continua a ser executado normalmente;
• Utilizando o try/catch:
try
{
//Trecho de código que pode gerar a exceção;
} catch ( nomeDaExceção nome ) { // Lógica para tratar a exceção };
15
Teoria
Valor e
Referência
Exceções
Delegates
Descrição
Declaração
Descrição
• De forma simplificada, um delegate é uma referência ( um
ponteiro ) para um ou mais métodos;
• Em C, um delegate seria um ponteiro para uma função!
• Permite que métodos sejam passados como parâmetros em
funções;
• Os parâmetros e o tipo de retorno de um delegate devem ser
iguais aos da(s) função(ões) que ele referencia;
17
Declaração
• Vamos supor que temos uma classe chamada Add, com o seguinte pragma:
• public float Add ( float a , float b );
• Para criar um delegate desse método, fazemos da seguinte maneira:
• delegate float nomeDoDelegate ( float x , float y );
• O nome dos parâmetros não precisa ser o mesmo, apenas os tipos;
• Instancializando um delegate e atribuindo o método Add:
• nomeDoDelegate nome = new delegate(new);
18
Teoria
Prática
Prática
• Continuar/Começar a implementar o Space Invaders;
• Implementar um Breakout;
• Montar um jogo para participar do campeonato e-games;
• Implementar um Asteroids;
• Montar um grupo para desenvolver algum jogo mais complexo.
20
Futuro
• Escolher o próximo curso;
• Sugestões de cursos e tópicos
que deveriam ser abordados;
• Micro-Avaliação de curso online;
21
Agradecimentos
public class principal
{
public abstract void fim();
}
public class palestra : principal
{
public override void fim()
{
Console.WriteLine ( “Obrigado!\n” );
}
}
22
Download

Objetivos - Tolstenko