220 likes | 318 Views
Tópicos Diversos em C#. Erick Luis Moraes de Sousa puyolzits@gmail.com 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. - .
E N D
Tópicos Diversos em C# Erick Luis Moraes de Sousa puyolzits@gmail.com http://forum.gamux.com.br
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 • Diferença entre valor e referência em C#; • Delegates; • Tratamento de Exceções.
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.
Usos • Keywordref: • 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: publicvoidmeuMetodo ( refint i ) { i++; } • Análogo para a keyword out.
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!
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 };
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;
Declaração • Vamos supor que temos uma classe chamada Add, com o seguinte pragma: • publicfloatAdd ( float a , float b ); • Para criar um delegate desse método, fazemos da seguinte maneira: • delegatefloatnomeDoDelegate ( 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 = newdelegate(new);
Prática • Continuar/Começar a implementar o SpaceInvaders; • Implementar um Breakout; • Montar um jogo para participar do campeonato e-games; • Implementar um Asteroids; • Montar um grupo para desenvolver algum jogo mais complexo.
Futuro • Escolher o próximo curso; • Sugestões de cursos e tópicos que deveriam ser abordados; • Micro-Avaliação de curso online;
Agradecimentos publicclass principal { public abstract void fim(); } publicclass palestra : principal { publicoverridevoid fim() { Console.WriteLine ( “Obrigado!\n” ); } }