42
Programação para Games II Professor Ariel da Silva Dias Orientação a Objetos

Programação para Games II - arieldias.comarieldias.com/material/2018-2/PGII/Aula1POO.pdf · Programação para Games II Professor Ariel da Silva Dias Orientação a Objetos Programação

Embed Size (px)

Citation preview

Programação para Games IIProfessor Ariel da Silva DiasOrientação a Objetos

Programação Estruturada X Programação Orientada a Objetos

Prof. Ariel Dias - www.arieldias.com

Orientação a Objetos

▪ “É um paradigma de programação de computadores onde se usam classes e objetos, criados a partir dos modelos descritos anteriormente, para representar e processar dados usando programas de computadores”. (SANTOS, 2003)

Prof. Ariel Dias - www.arieldias.com

Orientação a Objetos

▪ Surgiu no final da década de 50 com as linguagens ALGOL 58 e ALGOL 60

▪ Outras linguagens que preconizaram o conceito

▪ Simula 67 (60’s);

▪ Smalltalk (70’s);

▪ C++ (80’s).

▪ Surgiu da necessidade de modelar sistemas mais complexos.

▪ Os programas são arquitetados através de objetos que interagem entre si

4

Orientação a Objetos

▪ Este paradigma de programação tenta ser o mais óbvio, natural e exato possível;

▪ São conceitos essenciais:

▪ Classes e objetos;

▪ Atributos, Métodos e Mensagens;

▪ Herança e Associação;

▪ Encapsulamento;

▪ Polimorfismo;

▪ Interfaces.

5

O que é um objeto?

▪ “É a representação de uma coisa do mundo real.” (BARNES, 2009)

▪ Exemplo:

▪ Um carro

▪ Uma cadeira

▪ Uma caneta

▪ Uma impressora

Prof. Ariel Dias - www.arieldias.com

Objetos

▪ Objetos (computacionais) são caracterizados por atributos e métodos. Atributos são as propriedades de um objeto.

Prof. Ariel Dias - www.arieldias.com

Objetos

▪ Objetos armazenam seu estado em atributos

▪ Como às variáveis em programação estruturada.

▪ Objetos expõem seu comportamento através de métodos

▪ Como às funções em programação estruturada.

▪ Por exemplo: um cachorro

▪ Atributos: nome, cor, raça, fome…

▪ Métodos: latindo, pegando osso, comendo…

8

Objetos

▪ Quais são as características de um abajur?

▪ Quais são as características de uma lâmpada?

▪ E como tratamos a lâmpada de um abajur?

▪ Objetos variam em complexidade

▪ Porém, os detalhes relevantes dependem do contexto;

▪ Esta análise de características é traduzível em orientação a objetos.

9

Objetos

▪ Empacotar o código em objetos individuais fornece:

▪ Modularidade

▪ Objetos são independentes.

▪ Ocultação de informação

▪ Os detalhes da implementação de um objeto permanecem ocultos.

▪ Reuso

▪ Objetos podem ser reutilizados em diferentes programas.

▪ Plugabilidade

▪ Objetos podem ser substituídos em um programa, como peças.

10

Classes

▪ “É um projeto de um objeto. Ela informa como criar um objeto de um tipoespecífico.” (SIERRA & BATES, 2007)

▪ As classes de programação são receitas de um objeto, aonde têm característicase comportamentos, permitindo assim armazenar propriedades e métodos dentrodela.

Prof. Ariel Dias - www.arieldias.com

Classes

▪ No mundo real, encontramos vários objetos de um mesmo tipo

▪ Deve haver milhares de cães da mesma raça e mesma cor ou cores direfentes;

▪ Cada raça possui suas características. Mesmo que se diferenciem em suascaracterísticas, não deixam de ser categorizados como cães.

12

Classes

▪ Em orientação a objetos, dizemos que um objeto cachorro é uma instância da classe de objetos conhecida como Cães;

▪ Uma classe é o projeto a partir do qual objetos individuais são criados

▪ Ela define os atributos e os métodos correspondentes aos seus objetos.

▪ Podemos definir classe como a forma que modelará o objeto para que ele sejaum cão (e não um cavalo, por exemplo).

13

Classes

▪ Para definir uma classe é necessário, como tudo em orientação a objetos, abstrair um conjunto de objetos com características similares;

▪ Estas caracteríticas definem um cão e diferencia de outros animais

▪ Outros possíveis membros de uma classe são:

▪ Construtores

▪ Define as operações a serem realizadas quando um objeto é criado.

▪ Destrutores

▪ Define as operações a serem realizadas quando um objeto é destruído.

14

Classes

▪ Classes Abstratas

▪ Classes que não utilizaremos para instanciar objetos;

▪ Existem apenas para servir de molde para outras classes

▪ Para que outras classes herdem interface e/ou implementação.

▪ Classes Concretas

▪ Podem ser instanciadas

▪ Ou seja, podemos criar objetos.

15

Classes

▪ Quais as informações que descrevem um cão?

▪ cor, peso, altura e nome

▪ Para representarmos o cão com essas informações dentro do projeto em C#, precisamos criar uma classe

▪ Em C#, a declaração de classe é feita utilizando a palavra chave class

Prof. Ariel Dias - www.arieldias.com

Como representar uma classe?

▪ Usamos a UML Usamos a UML (Unified Unified Modeling Modeling LanguageLanguage) para representar as para representar as classes, utilizando umretângulo com três divisões: Nome da Classe, Variáveis de Instância e Métodos(ações).

Prof. Ariel Dias - www.arieldias.com

NomeDaClasse

Atributos

Métodos

Cao

-nome (String)-cor (String)-idade (int)

-peso (double)

+Anda+Late

+Dorme+PegaOsso

Classes

class Cao{String nome, cor; //ATRIBUTOSint idade;double peso;

public void Anda(){ } //MÉTODOSpublic void Late(){ }pubic void Dorme(){ }public void PegaOsso(){}

}

Por convenção, o código da classe Cao deve ficar dentro de um arquivo como o mesmo nome da classe. Ficará assim: Cao.cs

Prof. Ariel Dias - www.arieldias.com

Atributo

▪ Atributos são as características de um objeto, essas características também sãoconhecidas como variáveis, utilizando o exemplo dos cães, temos algunsatributos, tais como: cor, peso, altura e nome.

Prof. Ariel Dias - www.arieldias.com

Atributo

class Cao{

public String nome;

public String cor;

public double peso;

public double altura;

}

A palavra public permitirá que o código da aplicação possa ler e escrever nestesatributos.

Prof. Ariel Dias - www.arieldias.com

Método

▪ Métodos são as ações que os objetos podem exercer quando solicitados, ondepodem interagir e se comunicarem com outros objetos, utilizando o exemplo doscães, temos alguns exemplos: latir, correr, pular.

Prof. Ariel Dias - www.arieldias.com

Instâncias

▪ Instância é cada objeto criado a partir de uma classe

Prof. Ariel Dias - www.arieldias.com

Variável de Referência

▪ Quando declaramos uma variável de instância, ela aponta para o endereço de memória onde ficará armazenado o valor:

int numero = 138;

double peso = 14.2;

Prof. Ariel Dias - www.arieldias.com

14.2

138 endereço de memória chamado numero

endereço de memória chamado peso

Variável de Referência

▪ Quando declaramos uma variável de referência, ela aponta para o endereço de memória onde ficará armazenado um objeto do tipo especificado:

Carro car = new Carro();

Prof. Ariel Dias - www.arieldias.com

14.2

modelo=“Ferrari”cor=“Vermelha”velocidade=55acelerar()reduzir()bozinar()

138 endereço de memória chamado numero com o respectivo valor

endereço de memória chamado peso com o respectivo valor

endereço de memória onde está o objeto car com seus valores e métodos

Variável de Referência

▪ Uma declaração Carro car não aponta para nada.

▪ É preciso indicar qual objeto car irá referenciar.

▪ A palavra reservada new é usada para alocar espaço na memória para um novo objeto.

Prof. Ariel Dias - www.arieldias.com

Variável de Instância

▪ A variável pertence ao objeto.

▪ Se um objeto tiver alterar o valor de sua variável, outro não será impactado:

▪ Obj1 recebeu cor verde e Ob2 recebeu cor como vermelho.

▪ Ao imprimir o valor de cor de ambos os objetos, teremos a cor verde para o objeto 1 e cor vermelha para o objeto 2

Prof. Ariel Dias - www.arieldias.com

Variável de Classe

▪ A variável pertence à classe.

▪ Se um objeto tiver alterar o valor de sua variável, outro será impactado:

▪ Obj1 recebeu cor verde e Ob2 recebeu cor como vermelho.

▪ Ao imprimir o valor de cor de ambos os objetos, teremos a cor vermelha para o objeto 1 e cor vermelha para o objeto 2

Prof. Ariel Dias - www.arieldias.com

Variável Local e Variável Global

▪ Variável Global

▪ Trata-se da variável declarada dentro de uma classe e que pode ser acessada por qualquer método

▪ Variável Local

▪ A variável é declarada dentro do escopo de um método ou do escopo do if, for, switch, while. Não é possível acessar uma variável criada dentro de um método A estando no método B

Prof. Ariel Dias - www.arieldias.com

Na prática

▪ Vamos criar um novo projeto noVisual Studio

▪ Vá em Arquivo >> Novo >>Projeto

▪ No menu direito escolha VISUALC# e, em seguida, WINDOWSDESKTOP

▪ Na janela central, escolhaAPLICATIVO DO WINDOWSFORMS

▪ Dê o nome deMeuPrimeiroCodigoPOO

Prof. Ariel Dias - www.arieldias.com

Na prática

▪ Foi criada automaticamente um classe chamada Program.cs, ela está no menu a esquerda em Gerenciador de Soluções

▪ Esta é a nossa classe principal, a aplicação (seja ela qual for) se iniciará a partir desta classe

▪ Além desta classe, vamos criar uma outra chamada Carro.cs

▪ Por questões de convenção, toda classe se inicia com a primeira letra da palavra em maiúsculo

Prof. Ariel Dias - www.arieldias.com

Na prática

▪ Para criar uma classe faça:

▪ No Gerenciador de Soluções (ladodireito), clique com o botãodireito do mouse no nome doprojeto, que no nosso caso éMeuPrimeiroCodigoPOO

▪ Clique em Adicionar >> Classe...

▪ Na janela que abrirá, informe onome da classe que será Carro.cs

Prof. Ariel Dias - www.arieldias.com

Na prática

▪ Vamos implementar a classe carro

▪ Abra o arquivo Carro.cs

▪ Vamos colocar o código ao lado

Prof. Ariel Dias - www.arieldias.com

Carro

- modelo (String) - cor (String)

- velocidade (int)

+ buzinar( ) + acelerar( ) + reduzir( )

Na prática

▪ Em nosso projeto temos a classe Carro.cs e também a classe Program.cs

Prof. Ariel Dias - www.arieldias.com

Na prática

▪ Agora abra a classe Program.cs, nesta classe criaremos o nosso objeto do tipo Carro

▪ Para criar um novo objeto, a sintaxe é:

NomeDaClasse nomeObjeto = new MetodoConstrutor();

onde,

▪ NomeDaClasse é a classe que vamos gerar o método, no nosso caso, Carro

▪ nomeObjeto é o objeto propriamente dito. Por convenção, o nome do objeto inicia-se com letra minúscula. No nosso caso será car

▪ new criará um novo objeto na memória, este objeto será do tipo Carro

▪ MetodoConstrutor veremos mais adiante

Prof. Ariel Dias - www.arieldias.com

Na prática

▪ Um novo objeto será criado, você pode criar quantos objetos carros você desejar

▪ No exemplo, criamos um objeto carro chamado car e outros 2 objetos carros, um chamado ferrari e outro chamado Monza

▪ São 3 objetos diferentes, que ocupam 3 regiões de memórias diferentes

Prof. Ariel Dias - www.arieldias.com

Na prática

▪ Um novo objeto será criado, você pode criar quantos objetos carros você desejar

▪ No exemplo, criamos um objeto carro chamado car e outros 2 objetos carros, um chamado ferrari e outro chamado Monza

▪ São 3 objetos diferentes, que ocupam 3 regiões de memórias diferentes

Prof. Ariel Dias - www.arieldias.com

Na prática

▪ Todos os 3 carros possuem as mesmas ações e atributos, afinal são do tipo carro, porém cada um pode executar uma ação (método) independentemente um do outro:

Prof. Ariel Dias - www.arieldias.com

Na prática

▪ Vamos adicionar agora mais dois métodos ao nosso carro setModelo e setCor

▪ As variáveis m e c são temporárias e passam os valores por parâmetro

Prof. Ariel Dias - www.arieldias.com

Na prática

▪ Vamos também alterar os métodos Buzinar e Acelerar

Prof. Ariel Dias - www.arieldias.com

Na prática

▪ Voltando para a classe principal (Program.cs), passe o modelo do carro e a cor conforme abaixo

Prof. Ariel Dias - www.arieldias.com

Na prática

▪ O resultado da execução será apresentado na saída do Visual Studio na parte inferior

Prof. Ariel Dias - www.arieldias.com

Referência

▪ Notas de aula Professor José Romildo Malaquias - UFOP

Prof. Ariel Dias - www.arieldias.com