SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Instantiate
Em busca de um modelador 3D para plataforma educacional (Já ganhamos apoio de faculdades)
[JOGO] Mega BombermOn - Pokémon + Bomberman
Armazenar as informações de um botão e duplica-lo
História que eu fiz na hora vaga.
Blander ao juntar algumas partes ficam mais escuro
Nao consigo loga no banco de dados no mobile usando Mysql e PHP
Unity - Deslizar Para Rotacionar o 'Personagem'
Retornar um resultado de pagina PHP com texto formatado
Como Voltar o Player para o Início usando Trigger? C#
[TUTORIAL] Banco de dados || MySQL
IA de turret
Tem como deixar a Layer do objeto branca?
[TUTORIAL] Baixando roupas e alvos para MakeHuman
Drop Shadows
[RESOLVIDO] rotação no exio z
Importe objeto do blender
Erro ao compilar para IOS
Jogo 2D unity - trocar sprite ao apertar botão
Bug/Erro da unity?
Unity + MySQL
Erro de Prefab quando realiza o Build de um projeto 3D
[TUTORIAL] Unity 5 - Sistema Completo de PORTAS E CHAVES
movimento de uma nave
sombras para jogos mobile
o q vcs acham??
[Duvida] Bug ao usar Vector3.Lerp Objeto é teleportado na lata
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Download grátis de ônibus brasileiros - Millennium II Piso Baixo Central
[Devlog] Lost in the world 14/11
Discord para desenvolvimento de jogos
[TUTORIAL] Controle 3ª pessoa com animações mecânicas (root motion)
(UNITY) Erro ao compilar a Build Android
[RESOLVIDO]Como aplicar textura trânsparente na unity
Unity 3D - Desenhos Com Física(Download Projeto)
Como mudar o CONTROLLER do ANIMATOR
Como criar um poligono dinamicamente?
[RESOLVIDO] erro no unity
Problema ao rotacionar valores negativos.
Calcular hora ?
Novo estilo de estourar blocos, baixe meu jogo pessoal ... conto com a ajuda de vocês!!!
Jogo que fiz para uma Jam da minha faculdade FATEC Ourinhos.
Não consigo o Android SDK!!
[RESOLVIDO] Como faço para depois de determinado tempo acontecer algo?
CRASH AO ENTRAR NA CENA UNITY
estou procurando um bom tutorial de IA Basica
Erro ao colocar script no botão
Novo jogo em desenvolvimento, 13º andar
Text Dinâmico no botão
[TUTORIAL] Sistema Pdv, Mercado, Padaria, Conveniência, Lojas Em Geral - C# VISUAL STUDIO
[TUTORIAL] - Script de lanterna pra seu jogo de terror e outros...
[RESOLVIDO] Unity - Reproduzir Videos Do Blender No Unity
Ordem de fases
[RESOLVIDO] Tenho algum erro de simbolo no script do carro o que poderia ser?
[RESOLVIDO] Dúvida. Detectar colisões nas instâncias
erro na minha IA
[TUTORIAL] While, como funciona?
Mostrar a contagem em 10K e 100M
[TUTORIAL] AI Enemy 2.0 + animações ( Jogos de terror )
Cores nos materiais sem criar material
Poderia modelar um personagem cartoon para meu projeto
Como coloco modo de criação de personagem?
[Ajuda] Assets
RayCasting + Disparo Um Bom Tipo De Video Aula.
Ajuda de Blender para Unity
Procuro Equipe Para Criação de Jogo [PAGO]
[RESOLVIDO] erro WaterBaseEditor.cs não encontra o caminho do WaterBase
[TUTORIAL] Criar Analógico Virtual UI Para Mobile.
[TUTORIAL] Acessar nomes de arquivos diretamente da pasta
Objeto dentro do player nao ta rotacioando
[TUTORIAL] MENU PRINCIPAL - UNITY 5 (5.3 ou superior) (Com UI)
Array de prefabs
screenshot
instancia item aleatorio em varias posicoes
[TUTORIAL] Mira que fica se movendo (ocilando,tremendo,etc)
Getcomponent de C# para java
Curso barato de C#
Unity - Modelo 3D em Menu 2D
[RESOLVIDO] Camera Estilo Showroom
A um mês com unity bugado sem resposta
[GameJam] Competição organizada pela BitCodeStudios
Pegar strings de "duas em duas"
criar um piano no unity
Movimentação
Instanciar objeto onde cricar com mouse ou touch
Dúvida Sistema de Energia para jogo android
[RESOLVIDO] Inimigo patrulhando constantemente estilo mario
BUG UNITY 3D ROSA A SCENE E GAME
Dúvida. Colliders no Unity3D
Pq a grama do Unity é tao pesada?
Alguem cria uma conta na playstore pra mim? :(
Capture Panorama?
Artistas 3D e Programadores Unity3D (Remunerado)
Input Get Key
SCHULTZ Jogo de terror
(Erro) IndexOutOfRangeException:Array index is out of range
EU QUERIA COLOCAR ANUNCIOS NO MEU JOGO NA MUDANÇA DE CENAS MAS NÃO ACHO UM JEITO
Unity - Duvida Sobre a JDK Que Vocês Usam
[RESOLVIDO] Adicionar Botoes em controle mobile
Hoje à(s) 2:46 pm
Hoje à(s) 1:48 pm
Hoje à(s) 12:05 pm
Hoje à(s) 11:40 am
Hoje à(s) 1:05 am
Hoje à(s) 12:59 am
Ontem à(s) 11:35 pm
Ontem à(s) 11:30 pm
Ontem à(s) 11:28 pm
Ontem à(s) 11:20 pm
Ontem à(s) 11:20 pm
Ontem à(s) 11:18 pm
Ontem à(s) 11:13 pm
Ontem à(s) 2:16 am
Ontem à(s) 12:38 am
Sab Nov 17, 2018 11:31 pm
Sab Nov 17, 2018 11:20 pm
Sab Nov 17, 2018 11:16 pm
Sab Nov 17, 2018 11:13 pm
Sab Nov 17, 2018 11:11 pm
Sab Nov 17, 2018 11:04 pm
Sab Nov 17, 2018 11:03 pm
Sab Nov 17, 2018 11:00 pm
Sab Nov 17, 2018 10:55 pm
Sab Nov 17, 2018 2:50 pm
Sab Nov 17, 2018 1:31 pm
Sab Nov 17, 2018 11:12 am
Sab Nov 17, 2018 10:31 am
Sex Nov 16, 2018 3:50 pm
Sex Nov 16, 2018 11:23 am
Qui Nov 15, 2018 4:59 pm
Qui Nov 15, 2018 3:23 pm
Qua Nov 14, 2018 5:44 pm
Qua Nov 14, 2018 1:25 pm
Qua Nov 14, 2018 10:45 am
Ter Nov 13, 2018 11:25 pm
Ter Nov 13, 2018 11:23 pm
Ter Nov 13, 2018 11:18 pm
Ter Nov 13, 2018 5:55 pm
Ter Nov 13, 2018 1:30 pm
Ter Nov 13, 2018 11:33 am
Seg Nov 12, 2018 9:52 pm
Seg Nov 12, 2018 3:57 pm
Seg Nov 12, 2018 3:24 pm
Seg Nov 12, 2018 8:13 am
Seg Nov 12, 2018 8:11 am
Dom Nov 11, 2018 6:56 pm
Dom Nov 11, 2018 2:41 pm
Dom Nov 11, 2018 8:12 am
Dom Nov 11, 2018 7:57 am
Sab Nov 10, 2018 8:54 pm
Sab Nov 10, 2018 5:11 pm
Sab Nov 10, 2018 2:52 pm
Sab Nov 10, 2018 2:13 pm
Sab Nov 10, 2018 12:39 am
Sab Nov 10, 2018 12:28 am
Sex Nov 09, 2018 3:56 pm
Qui Nov 08, 2018 11:28 pm
Qui Nov 08, 2018 11:25 pm
Qui Nov 08, 2018 10:01 pm
Qui Nov 08, 2018 7:47 pm
Qui Nov 08, 2018 12:36 pm
Qui Nov 08, 2018 12:31 pm
Qui Nov 08, 2018 12:28 pm
Qui Nov 08, 2018 12:53 am
Qua Nov 07, 2018 5:52 pm
Qua Nov 07, 2018 12:49 pm
Ter Nov 06, 2018 2:05 pm
Ter Nov 06, 2018 12:30 pm
Ter Nov 06, 2018 11:32 am
Ter Nov 06, 2018 1:10 am
Seg Nov 05, 2018 6:57 pm
Seg Nov 05, 2018 3:36 pm
Seg Nov 05, 2018 12:44 am
Dom Nov 04, 2018 5:32 pm
Dom Nov 04, 2018 5:31 pm
Dom Nov 04, 2018 5:30 pm
Dom Nov 04, 2018 1:05 am
Sab Nov 03, 2018 1:36 pm
Sex Nov 02, 2018 11:38 pm
Sex Nov 02, 2018 10:55 pm
Sex Nov 02, 2018 8:16 pm
Sex Nov 02, 2018 7:50 pm
Sex Nov 02, 2018 7:41 pm
Sex Nov 02, 2018 7:27 pm
Sex Nov 02, 2018 6:36 pm
Sex Nov 02, 2018 3:27 pm
Sex Nov 02, 2018 3:35 am
Sex Nov 02, 2018 3:24 am
Qui Nov 01, 2018 3:56 pm
Qui Nov 01, 2018 3:52 pm
Qui Nov 01, 2018 1:18 pm
Qui Nov 01, 2018 7:57 am
Qui Nov 01, 2018 2:26 am
Qui Nov 01, 2018 2:05 am
Qua Out 31, 2018 9:20 pm
Qua Out 31, 2018 6:09 pm
Qua Out 31, 2018 7:17 am
Ter Out 30, 2018 11:34 pm
francisco barroso
rZwr
MayLeone
MayLeone
SuperGamer
MarcosSchultz
sabbath
JohnRambo
sabbath
MarcosSchultz
sabbath
MarcosSchultz
MarcosSchultz
Callyde Jr
NKKF
theus.mors
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
marcos4503
Daniel Pires da Silva
francisco barroso
Weslley
SuperGamer
Mateus2583
JohnRambo
francieljesus
sabbath
TioUV
JohnRambo
MarcosSchultz
MarcosSchultz
MarceloYBP
Weslley
Callyde Jr
hamerom
luansantos
francisco barroso
Vitor Paulino
dstaroski
dstaroski
SuperGamer
Patrick
dstaroski
dstaroski
SuperGamer
Magnatah
francisco barroso
Samuelostgamer
GattiMene
MarceloYBP
SuperGamer
Tegh
francisco barroso
NKKF
GameLACK
dstaroski
dstaroski
dstaroski
jack2117
Mathss
Daniel Dória
JohnRambo
gurgelg752
francisco barroso
MarcosSchultz
Nalfam
dstaroski
MarcosSchultz
dstaroski
dstaroski
dstaroski
Magnatah
Teio
Callyde Jr
hetrodo
NKKF
CarlosDT94
MarcosSchultz
MarcosSchultz
Magnatah
MrMattD
MarcosSchultz
MarcosSchultz
francisco barroso
francisco barroso
Callyde Jr
Dom3000
MarcosSchultz
MarcosSchultz
francisco barroso
MATHEUS1233
dstaroski
francisco barroso

[AULA] Programação orientada a objetos: Classes e instâncias

Ir em baixo

TUTORIAL [AULA] Programação orientada a objetos: Classes e instâncias

Mensagem por MayLeone em Seg Jul 09, 2018 5:13 pm



Qual a vantagem da POO em programação?
Uma das vantagens de se utilizar a POO na programação com certeza é o uso das classes e suas instâncias.
Em outros paradigmas de programação (principalmente procedural) é comum se utilizar de variáveis para qualquer situação, mesmo se você precisar de informações específicas para aquele problema.
Para exemplificar melhor, vamos supor que você esteja programando um cadastro de super-mercado, onde cada produto vai receber algumas informações, tais como: Nome do produto, preço, tipo de produto, código de barras, pequena descrição e data de validade.
Sem a programação orientada a objetos, você poderia criar as variáveis que poderá utilizar nesses produtos:




Para cadastrar um produto você poderia realizar o seguinte:




Neste momento você tem um cadastro de apenas UM produto, mas e se quisesse cadastrar outros? Teria de criar novas varáveis para cada produto (nome, tipo, preço, e etc) ou vetores/matrizes para cada informação.
Concorda que além do código se tornar grande e pesado, ainda daria uma certa confusão com tantas variáveis sendo utilizadas ao mesmo tempo?
Agora imagine criar uma "repartição" no código onde você pudesse guardar todas essas informações (preço, código de barras e etc) e poder reutilizar todas essas variáveis para vários produtos diferentes?
Com as classes em POO você pode fazer isto, ou seja, na prática, você estaria criando uma classe chamada "Produtos" e ao criar uma variável deste tipo, todas essas informações e mais algumas outras que você queira futuramente adicionar estarão todas armazenadas dentro de uma única variável!
Essa variável que você cria do tipo da sua classe se chama instância de classe (ou simplesmenteobjeto) e que vai armazenar todas as informações acessíveis contidas dentro de uma classe.
Graficamente falando, se fossemos utilizar como exemplo a classe de "Produtos", a variável "objetoProduto" seria dessa forma:




Ou seja, todas aquelas informações que estavam espalhadas no seu código anteriormente foram "colocadas" dentro de uma única variável.
Você consegue perceber as vantagens de utilizar classes e objetos em seu código agora?

Classes:
Como visto acima, as classes podem "comprimir" informações de um determinado tipo específico, como se fosse uma forma de "categorização" de objetos.
No exemplo acima, vimos uma classe chamada "Produtos" que contém informações referentes a itens de super-mercados, lojas e etc. Pense que essa classe não seria útil para a criação de um item diferente, como por exemplo, o item "Ser humano", pois o ser humano não possui código de barras, preços, ou outras informações contidas naquela classe de produtos.
O mais adequado para este caso seria criar uma outra classe chamada "Ser humano", e dentro dela adicionar informações sobre este "item", como idade, endereço, gênero, profissão, e etc.
Percebe que as classes são realmente uma espécie de "classificação" de objetos? Onde ela deve ser utilizada em cima de um objeto que pertence à sua "categoria"?
Note também que não utilizamos a classe diretamente, ela é como se fosse um "modelo" de um objeto, onde colocamos dentro dela informações de características que aquele determinado tipo de objeto vai poder fazer uso.
Imagine da seguinte forma: A receita de um bolo (que contém os ingredientes e modo de preparo) são as classes (o molde daquele item) e o bolo pronto para ser consumido são os objetos, que foram projetados em cima daquele modelo (classe).
Para exemplificar melhor estas analogias, vamos criar na prática uma classe em C# e utilizá-la num código simples:

Criando as classes:
Abra um novo projeto no seu Visual Studio com o nome que desejar.
Vamos criar uma classe de modelo para o objeto "Bola", ou seja, a partir desta classe, poderemos criar vários tipos de bolas para esportes e finalidades diferentes (Aqui está fortemente exemplificado também o conceito de polimorfismo!)
Para criar uma nova classe em seu programa, vá na janela do Solution Explorer do projeto e clique com o lado direito do mouse, indo à opção "Add >> Class":




Na janela que aparecer selecione a opção "Class" (caso ela não esteja selecionada) e dê um nome a sua classe. Para este exemplo o nome da minha classe será "Bola".
Quando você der um ok, uma nova janela irá abrir em seu Visual Studio da seguinte forma:


Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Classe__Objetos__Aula____1
{
class Bola{
}
}



Perceba que agora você possui uma nova classe chamada "Bola" em seu programa?
Você identifica a classe através de sua palavrada reservada"class", à frente do seu nome.
As classes possuem um corpo (assim como os métodos) limitado pelas chaves {}, ou seja, será dentro dessas chaves que você irá programar a sua classe.
Dentro das classes você basicamente poderá definir variáveis (que são chamadas depropriedades), assim como fizemos no exemplo de "Produtos", e também os comportamentosque aquela classe terá, que são definidos através de métodos.

Programando dentro de classes:
Uma vez tendo a classe criada, é hora de adicionar algumas propriedades nela, como por exemplo, as características físicas que uma bola pode possuir:




Perceba que eu criei algumas propriedades do tipo "string" que podem armazenar o nome, tipo de esporte, cor, e tamanho da bola? Bem como defini uma variável do tipo "double" que vai armazenar o volume daquela bola, e duas constantes: "Pi" e "esferaDivisão" para que eu possa calcular corretamente o volume daquela bola.

*Caso você não saiba, o volume de uma esfera é calculado através da seguinte fórmula: (Por isso a necessidade de criar as constantes)



Além de propriedades, eu posso adicionar comportamentos que a bola pode ter, tais como: Quicar, rolar, murchar, e etc.
Os comportamentos das classes eu defino através de métodos:




Veja que os métodos "Quicar" e "Murchar" possuem uma programação básica de comportamento para que eu possa exemplificar a utilidade de métodos em classes.
Enquanto o método "murchar" apenas exibe uma mensagem dizendo que a bola está vazia, o método "Quicar" exibe a força com que a bola quica, dependendo do seu tamanho, ou seja, as bolas menores podem quicar mais que as bolas maiores, logo, dependendo dos objetos que vão receber essa classe, a mensagem a ser exibida por este método será diferente! (Polimorfismo, novamente).

Além de comportamentos, podemos criar métodos específicos para atender as necessidades daquela classe, como por exemplo, um método que calcula o volume da bola:




Instanciando classes:
Agora que aparentemente terminamos de escrever o "molde" das bolas, vamos criar nosso objeto (nossa instância) para receber as informações e ativar os comportamentos.
Volte para a janela do programa principal e crie uma variável do tipo "Bola" com o nome de bola1:

Bola bola1;

Para que este objeto seja inicializado devemos criar uma instância dessa classe, ou seja, "alocar" um espaço da memória para essas informações.
Para fazer isso, atribua ao objeto da classe o operador "new" (que irá realizar a instância) e especifique quem você quer instanciar, no caso "Bola":

 Bola bola1 = new Bola();

Perceba que "Bola()" não é a classe em si, mas sim um método com o nome dessa classe.
Este método especial que recebe o nome da classe se chama "método construtor" e ele é o responsável por inicializar todos os campos daquela classe em específico.
Perceba que não criamos este método dentro de nossa classe, mas o código compila sem dar erros pelo simples motivo de que se você não definir o construtor da classe, o C# define um padrão para você. (Na próxima aula falaremos sobre construtores).

Agora que criamos esta instância, podemos utilizar o objeto "bola1" para adicionar valores às propriedades da classe:

Utilizando as classes:
Escreva "bola1." e através do operador "." você terá disponível todos os métodos e propriedades criados dentro daquela classe:




Isso acontece pois, todos os métodos e propriedades de sua classe foram definidos como "public", ou seja, poderão ser acessados fora da classe de onde foram definidos. (Teremos uma aula que irá falar sobre acessibilidade do código e encapsulamento, pois nem sempre é interessante deixar essas informações públicas, porém, por enquanto, deixemos desta forma).
Perceba que as constantes "pi" e "esferaDivisão" não aparecem como propriedades, pois elas estão privadas (não será necessário modificá-las durante a programação).
Agora você pode definir as características desta bola através de suas propriedades:





Também é possível realizar comportamentos com esta bola, basta chamar seus métodos:



E podemos exibir todos esses resultados na tela com um Console.WriteLine:






Ao executar o código você terá algo desta forma:



Podemos também criar um novo método dentro da classe bola com o nome de "MostrarInformacaoes" para que todas essas informações sejam exibidas quando o método for chamado, assim não precisamos repetir este processo:



Perceba que o código vai dar erro por conta de "bola1", e é evidente que sim pois, "bola1" é um objeto que foi definido fora dessa classe, ele não existe neste contexto. Sem dizer que, se você criar um outro objeto, por exemplo "bola2" esta validação não irá ser correta, pois "bola1" é diferente de ser "bola2".
Para acabar com este problema, quando queremos referenciar um objeto daquela classe dentro da própria classe, nós utilizamos a palavra reservada "this" que significa justamente "este", ou seja, de uma forma genérica é como dizer "este objeto":



Agora que criamos o método de mostrar as informações daquele objeto, volte para a janela do programa principal e crie um novo objeto com o nome "bola2" com características diferentes:






Perceba que ao testar o código você terá esta saída de dados:







Perceba que apesar de pertencerem à mesma classe, "bola1" e "bola2" são instâncias diferentes de "Bola", portanto podem possuir propriedades e comportamentos diversificados, dependendo do seu contexto e necessidade.
Com isso você pode concluir também que realmente a classe é como se fosse um "molde" de um objeto, pois a partir dela podemos criar vários objetos diferentes daquela mesma "categoria" com propósitos, propriedades e comportamentos distintos.


Você pode criar outras bolas com esta classe, mas sempre vai utilizar as mesmas propriedades e métodos que existem dentro daquela "receita", apenas alternando seus estados dependendo daquele objeto em específico, o que não aconteceria em outros paradigmas de programação que não utilizem as classes e suas instâncias, como a POO utiliza.
Lembra que no exemplo dos produtos você teria várias variáveis diferentes para cada tipo de produto existente na loja? Imagina se fossem por exemplo 100 produtos! A quantidade de variáveis e espaço na memória que você iria consumir seria muito maior.
Agora imagine a mesma situação utilizando a POO: É mais organizado e mais dinâmico criar um "molde" para todos os produtos e depois definir objetos distintos com base dessa classe, não é mesmo?


Finalização:
Esta aula se encerra por aqui, mas tenha em mente que este assunto com relação à classe e objetos é bem extenso, por tanto não deixe de ler as outras aulas no blog para aumentar seu conhecimento e também de praticar bastante, pois só praticando e realizando o mesmo processo várias vezes que você vai aprender e se acostumar com a ideia. Então eu lhe desafio: Crie classes diferentes em seu programa e as instancie em objetos diferentes, assim como fizemos nesta aula e poste seus resultados aqui. A prática leva à perfeição!
avatar
MayLeone
ProgramadorMaster

Feminino PONTOS : 573
REPUTAÇÃO : 170
Áreas de atuação : Unity, C++/C#, HTML, CSS, JS, jQuery, PHP, MySQL, XML, Blender
Respeito as regras :

Ver perfil do usuário http://compilemosfacil.blogspot.com.br

Voltar ao Topo Ir em baixo

TUTORIAL Re: [AULA] Programação orientada a objetos: Classes e instâncias

Mensagem por NKKF em Seg Jul 09, 2018 5:45 pm

BAUM COMO SEMPRE.
avatar
NKKF
ProgramadorMaster

Masculino PONTOS : 2040
REPUTAÇÃO : 408
Idade : 14
Áreas de atuação : Error 404 Not Found.
Respeito as regras :

Ver perfil do usuário http://www.projetounity.esy.es

Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum