Jogos Digitais - Aula 11
Revisão OOP(POO)
Feedback para Professores
Quatro conceitos basicos de OOP
Encapsulamento
Abstração
Herança
Polimorfismo
Encapsulamento
Organizar dados e funcionamento em uma estrutura única.
Uma classe deve conter métodos e atributos acoplados, e gerenciar o acesso a esses atributos.
Isso visa garantir o bom funcionamento de seu código sem que o objeto fique em um estado inválido.
O método Start() é o construtor da classe?
Falso
Verdadeiro
Classes
Atributos (estados, propriedades, campos)
Métodos (comportamentos, operações)
O que acontece com o atributo: "disponivel" ?
Público
Privado
Protegido
Internal
Classes
Instanciação
Usando a instrução new
Construtores:
Método com o mesmo nome da classe
Qual a forma correta de instanciar "Produto"?
Produto produto = new (1.0f) Produto;
Produto produto(1.0f) = new Produto;
Produto produto = new Produto(1.0f);
Produto (1.0f) produto = new Produto;
Propriedades
Propriedades podem validar os dados antes de permitir uma alteração; elas podem expor, de forma transparente, os dados em uma classe em que esses dados são realmente recuperados de outra origem qualquer, como um banco de dados; elas podem executar uma ação quando os dados são alterados, como acionar um evento ou alterar o valor de outros campos.
Onde está o erro no seguinte código?
get <= _name;
set => value = _name;
set <= _name = value;
Nenhuma das anteriores
Herança
Possibilidade de uma classe reutilizar métodos e atributos de uma classe pai.
Isso permite/simplifica reuso de código.
Miando
Andando de alguma forma
Métodos Virtuais
Métodos podem ser sobrescritos pelas classes filho, porém é importante colocar o modificador "virtual" na declaração do método
Para sobrescrever um método, use o modificador "override".
Caso desejar usar o método da classe pai, use o modificador "base".
Qual é a saída do seguinte código?
Andando como gato
Andando como gato
Andando de alguma forma
Andando de alguma forma
Andando de alguma forma
Andando como gato
Andando como gato
Andando de alguma forma
Abstração
Apenas o necessário para um funcionamento de código, sem que seja necessário entender toda uma implementação
Utilizamos classes abstratas e interfaces para isso.
Abstração
Classe Abstrata:
Classe base que não pode ser utilizada diretamente para instanciar objetos.
Pode conter atributos, propriedades, métodos, e métodos abstratos.
Abstração
Interface:
“Classe” estritamente abstrata que definem metodos necesários para um contexto definido.
Pode conter apenas propriedades e métodos abstratos.
Utilizada para adicionar métodos específicos a outra classe.
O que está no fim do fio “não importa”
Mas para ligar na tomada precisamos deste plugue.
Essa é a ideia de interfaces.
Abstração
Interface:
“Classe” estritamente abstrata que definem metodos necesários para um contexto definido.
Pode conter apenas propriedades e métodos abstratos.
Utilizada para adicionar métodos específicos a outra classe.
Podemos instanciar uma Classes Abstrata?
Falso
Verdadeiro
Polimorfismo
Múltiplas implementações do mesmo "comportamento".
Podemos utilizar os metodos comuns entre objetos que herdam da mesma super-classe e/ou implementem uma mesma interface, sem de fato interagir com o tipo específico do objeto.
Podemos herdar de várias Classes?
Falso
Verdadeiro
Todos os Design Patterns
Creational Design Patterns
Structural Design Patterns
Behavioral Patterns
Def.: Garante que uma classe tenha uma única instância, mantendo um acesso global
É um padrão de projeto que é a solução para um “problema” que acontece frequentemente. Em jogos um “problema” recorrente é o loop de gameplay, e o pattern dele é um FSM.
Main Screen
Game�loop
Gameover Screen
Option�Screen
Quit�Game
Base da estrutura da Unity que é um sistema baseado em componentes.