Post on 07-Aug-2020
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