tópicos diversos em c# erick luis moraes de sousa [email protected]
TRANSCRIPT
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
7
Objetivos
• Diferença entre valor e referência em C#;
• Delegates;
• Tratamento de Exceções.
Teoria Prática
Teoria
Valor e Referência
Conceito Usos
Exceções Delegates
10
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.
11
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.
Teoria
Valor e Referência Exceções
Utilidades e Motivações Try/Catch
Delegates
13
Utilidades e Motivações
14
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!
15
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 };
Teoria
Valor e Referência Exceções Delegates
Descrição Declaração
17
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;
18
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);
Teoria Prática
20
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.
21
Futuro
• Escolher o próximo curso;
• Sugestões de cursos e tópicos que deveriam ser abordados;
• Micro-Avaliação de curso online;
22
Agradecimentospublic class principal{
public abstract void fim();}
public class palestra : principal{
public override void fim(){
Console.WriteLine ( “Obrigado!\n” );}
}