1 of 26

Jogos Digitais - Aula 11

Revisão OOP(POO)

2 of 26

Feedback para Professores

· Link para avaliação: https://insper.avaliar.org/

· Código da avaliação: 63068

· Chave: 149331

3 of 26

Quatro conceitos basicos de OOP

Encapsulamento

Abstração

Herança

Polimorfismo

4 of 26

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.

5 of 26

O método Start() é o construtor da classe?

Falso

Verdadeiro

6 of 26

Classes

Atributos (estados, propriedades, campos)

Métodos (comportamentos, operações)

7 of 26

O que acontece com o atributo: "disponivel" ?

Público

Privado

Protegido

Internal

8 of 26

Classes

Instanciação

Usando a instrução new

Construtores:

Método com o mesmo nome da classe

9 of 26

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;

10 of 26

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.

11 of 26

Onde está o erro no seguinte código?

get <= _name;

set => value = _name;

set <= _name = value;

Nenhuma das anteriores

12 of 26

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

13 of 26

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".

14 of 26

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

15 of 26

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.

16 of 26

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.

17 of 26

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.

18 of 26

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.

19 of 26

Podemos instanciar uma Classes Abstrata?

Falso

Verdadeiro

20 of 26

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.

21 of 26

Podemos herdar de várias Classes?

Falso

Verdadeiro

22 of 26

23 of 26

Todos os Design Patterns

Creational Design Patterns

  • Abstract Factory
  • Builder
  • Factory Method
  • Prototype
  • Singleton

Structural Design Patterns

  • Adapter
  • Bridge
  • Composite
  • Decorator
  • Façade
  • Flyweight
  • Proxy

Behavioral Patterns

  • Chain of Responsibility
  • Command
  • Interpreter
  • Iterator
  • Mediator
  • Memento
  • Observer
  • State
  • Strategy
  • Template Method
  • Visitor

24 of 26

Def.: Garante que uma classe tenha uma única instância, mantendo um acesso global

25 of 26

É 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

26 of 26

Base da estrutura da Unity que é um sistema baseado em componentes.

  • Cada gameObject intangível deve ter seu próprio script de comportamento
  • Um Script não pode afetar o comportamento de outro Script (ou game object)
  • Cada componente do jogo deve ser isolado dos outros, mesmo que interagem entre si.