22

Tópicos Diversos em C# Erick Luis Moraes de Sousa [email protected]

Embed Size (px)

Citation preview

Page 1: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com
Page 2: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

Tópicos Diversos em C#

Erick Luis Moraes de [email protected]

http://forum.gamux.com.br

Page 3: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

REVISÃO

Page 4: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

-

Revisão

• Orientação a Objetos:– Classe;– Objeto/Instância;– Método;– Construtor;– Propriedade;– Herança;– Modificadores de Acesso;

Page 5: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

-

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;

Page 6: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

OBJETIVOS

Page 7: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

7

Objetivos

• Diferença entre valor e referência em C#;

• Delegates;

• Tratamento de Exceções.

Page 8: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

Teoria Prática

Page 9: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

Teoria

Valor e Referência

Conceito Usos

Exceções Delegates

Page 10: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

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.

Page 11: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

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.

Page 12: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

Teoria

Valor e Referência Exceções

Utilidades e Motivações Try/Catch

Delegates

Page 13: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

13

Utilidades e Motivações

Page 14: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

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!

Page 15: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

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 };

Page 16: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

Teoria

Valor e Referência Exceções Delegates

Descrição Declaração

Page 17: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

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;

Page 18: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

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);

Page 19: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

Teoria Prática

Page 20: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

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.

Page 21: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

21

Futuro

• Escolher o próximo curso;

• Sugestões de cursos e tópicos que deveriam ser abordados;

• Micro-Avaliação de curso online;

Page 22: Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com

22

Agradecimentospublic class principal{

public abstract void fim();}

public class palestra : principal{

public override void fim(){

Console.WriteLine ( “Obrigado!\n” );}

}