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:
Jogo de Favela para Android - Estou usando o MS Vehicle System do Marcos!
Meu game para Android " As aventuras de Steff " finalizado, ou quase!
Mecânica do Inimigo (Horror Survive)
iae galera, postei meu jogo no Google play recentemente.
Modificação no Script
Problemas com animações
GUARDAR MACHADO
Erro ao usb
Criar Apk Android 64 .aab
Como "medir" a distância do caminho no NavMesh??
Bibliotecas obsoletas causam alguma perda de desempenho?
O jogo acaba depois de um determinado tempo
Mecânica simples no estilo Jogo da Memória
COMO MUDAR UMA VARIAVEL APOS EX: 10 DIAS
Duvida com Script de AI inteligente
Duvida com FadeIn e FadeOut quando o tempo do jogo acaba
Como fazer o personagem não conseguir flipar enquanto estou atacando? (Unity 2D)
Duvida com Network
efeito de pingos na tela e camera com leve balanço realista (game 2D)
Como criar perfil no jogo para quem pagar na play store
Uma Ideia Movimento
INVENTÁRIO ESTILO THE FOREST
ANIMAÇÃO INFINITA NO UNITY
Problemas para salvar imagem de textura gerada na Unity no PC
Deformar mesh sem usar rigidbody e reconhecer força do impacto
Existe outras formas de multiplayer sem ser pelo Photon ou Unet?
força de impacto em npc proximo a objeto que explode
criar perfil no jogo para quem pagar na play store
Uma Ideia Movimento
Sistema De Radio
Jogo de Maior ou Menor - Duvida sobre melhorias no script
As funções dadas não são executadas no cliente, somente no servidor...
Mudar a música com base na mudança do ambiente
[RESOLVIDO] Dano no inimigo
Caixa de dialogo aparece e desaparece muito rápido ;-
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Reiniciar Scene ao tocar Objeto
Ajuda com O Script de coletar objetos e transição de cena
Unity2D- Como criar um spawn inimigo onde saia apenas 2 inimigos do spawn?
Android Game - Fleeing From Evil
[TUTORIAL] Resolver bug dos reflexos, Unity 5.5+
[AJUDA]Preciso de ajuda em um script relacionado ao vídeo Sistema de escolha de personagen
Conexões!
Script faz a função tudo certo na unity, já quando gero apk o script não faz a função
NavMeshAgent com caminho manual.
Preciso de Ajuda Estou a desenvolver um projeto!
Direitos Autorais da Asset Store
Os seguinte apks ou pacotes de apps estão disponíveis para dispositivos de 64 bits!!
Estou querendo mandar as informações SERVIDOR/CLIENTE com o NETWORK
Erro no unity quando eu crio um projeto
Video Player travando no apk do jogo
Update jogo
Erro ao publicar na google play
[RESOLVIDO] BUG MT CHATO. USANDO O PlayerPrefs. ME AJUDAAAAAAA PF
Aparecer Texto Aleatório
Preciso De Um Programador! Para Um Game Fps!
[DUVIDA] Problemas na rotação de uma esfera com o mouse ( AddTorque )
[RESOLVIDO] Como fazer isso em for ou foreach dentro do update
Conceito básico de jogo em Rede Local.
Uso de PNG ou JPG no Unity?
Duvida(tamanho de objetos)
App feito na Unity - Biblia Sagrada
Unity carregando objetos sozinho
Limitação do FPS
Duvida sobre a geração de cenários aleatórios(plataforma 2D)
Personagem olhar para direção de onde estiver se movimentando
Problema com Dano ao Inimigo
Dúvida sobre chaves PlayerPrefs
inventario/Matrix
Personagem voando infinitamente no Unity 2D
[RESOLVIDO] Alguém sabe como tirar esse impulso do collider ?
[RESOLVIDO] Como fazer um objeto 2D rotacionar em direção a outro objeto
Como faço para Criar um sistema de touch em primeira pessoa na Unity2019?
duvida em c#
Shader com efeito de dissolução
[TUTORIAL] Sistema de tiro com RAYCAST (várias armas, mira laser, munição, dano, etc, etc)
Problema com a função Resolution[]
Função Text não esta dando erro no Unity2D (Score Text)
Unity travando na hora do Play
Duvida Raycast2D
Bug Partículas
Física ser calculada mais rápida
[TUTORIAL] Fazer som tocar apenas com colisão
Sobre Criação e Execução de Cutscene
O jogo acaba depois de um determinado tempo
Como fazer uma cena resetar ao voltar para ela
Fonte com caracteres matemáticos para unity
Luz
MENU DE SELEÇÃO DE FASES
usar bluetooh
HDRP - Render Texture Trasnparente na UI
Edge Collider de maneira mais eficaz
Vídeo player não mostra nada
ALGUÉM SABER COMO RESOLVER ESSE BUG???
Tem como achar uma Letra/palavra dentro de uma string?
Qual unity usar?
Alguem tem um Script que faz objetos se mexer com delay?
Delay in guns mobile
Comunidade para desenvolvedores de jogos
Hoje à(s) 2:06 pm
Hoje à(s) 12:14 pm
Hoje à(s) 9:40 am
Hoje à(s) 9:33 am
Hoje à(s) 3:44 am
Ontem à(s) 8:09 pm
Ontem à(s) 6:27 pm
Ontem à(s) 6:25 pm
Ontem à(s) 11:56 am
Ontem à(s) 11:00 am
Qua Out 16, 2019 10:44 pm
Qua Out 16, 2019 9:40 pm
Qua Out 16, 2019 9:34 pm
Qua Out 16, 2019 8:25 pm
Qua Out 16, 2019 3:56 pm
Qua Out 16, 2019 3:51 pm
Ter Out 15, 2019 10:35 pm
Ter Out 15, 2019 9:58 pm
Ter Out 15, 2019 9:25 pm
Ter Out 15, 2019 2:55 pm
Ter Out 15, 2019 1:31 pm
Ter Out 15, 2019 11:47 am
Ter Out 15, 2019 11:43 am
Ter Out 15, 2019 1:06 am
Ter Out 15, 2019 12:13 am
Seg Out 14, 2019 10:00 pm
Seg Out 14, 2019 8:36 pm
Seg Out 14, 2019 8:09 pm
Seg Out 14, 2019 8:04 pm
Seg Out 14, 2019 4:45 pm
Seg Out 14, 2019 1:29 pm
Seg Out 14, 2019 8:06 am
Seg Out 14, 2019 2:33 am
Dom Out 13, 2019 4:47 pm
Dom Out 13, 2019 3:52 pm
Dom Out 13, 2019 9:39 am
Dom Out 13, 2019 2:52 am
Dom Out 13, 2019 2:29 am
Sab Out 12, 2019 7:15 pm
Sab Out 12, 2019 11:21 am
Sex Out 11, 2019 8:06 pm
Sex Out 11, 2019 5:52 pm
Sex Out 11, 2019 5:23 pm
Sex Out 11, 2019 2:48 pm
Sex Out 11, 2019 12:38 pm
Sex Out 11, 2019 11:14 am
Sex Out 11, 2019 9:17 am
Sex Out 11, 2019 8:04 am
Qui Out 10, 2019 5:27 pm
Qui Out 10, 2019 2:32 pm
Qui Out 10, 2019 2:13 pm
Qui Out 10, 2019 1:42 pm
Qui Out 10, 2019 11:30 am
Qua Out 09, 2019 8:07 pm
Qua Out 09, 2019 2:26 pm
Ter Out 08, 2019 10:27 pm
Ter Out 08, 2019 8:12 pm
Ter Out 08, 2019 6:01 pm
Ter Out 08, 2019 5:05 pm
Ter Out 08, 2019 3:12 pm
Ter Out 08, 2019 3:07 pm
Ter Out 08, 2019 11:25 am
Ter Out 08, 2019 2:45 am
Ter Out 08, 2019 2:07 am
Seg Out 07, 2019 10:43 am
Seg Out 07, 2019 3:11 am
Dom Out 06, 2019 5:24 pm
Dom Out 06, 2019 4:02 pm
Dom Out 06, 2019 3:56 pm
Sab Out 05, 2019 3:08 pm
Sab Out 05, 2019 1:41 pm
Sab Out 05, 2019 1:40 pm
Sex Out 04, 2019 10:04 pm
Sex Out 04, 2019 9:12 pm
Sex Out 04, 2019 11:41 am
Qui Out 03, 2019 8:34 pm
Qui Out 03, 2019 7:57 pm
Qui Out 03, 2019 3:46 pm
Qui Out 03, 2019 10:28 am
Qui Out 03, 2019 7:19 am
Qua Out 02, 2019 11:09 pm
Qua Out 02, 2019 5:09 pm
Qua Out 02, 2019 11:19 am
Qua Out 02, 2019 8:57 am
Ter Out 01, 2019 9:03 pm
Ter Out 01, 2019 4:40 pm
Ter Out 01, 2019 4:23 pm
Seg Set 30, 2019 8:50 pm
Seg Set 30, 2019 3:17 pm
Seg Set 30, 2019 10:41 am
Seg Set 30, 2019 3:37 am
Dom Set 29, 2019 7:02 pm
Dom Set 29, 2019 2:08 pm
Dom Set 29, 2019 10:28 am
Dom Set 29, 2019 10:21 am
Dom Set 29, 2019 5:43 am
Sab Set 28, 2019 3:59 pm
Sab Set 28, 2019 2:18 pm
Sex Set 27, 2019 8:59 pm
lunaticsgames
Tomás zjjxj
Lester3422
Willams
MayLeone
Samuelostgamer
Fagner
FSL02
SergioDB
Fagner
RodriGO3477
Okeizito
joffersoju
nibirou
Lester3422
Lester3422
Hamassfall
igorarruda
Joab Artes Gráficas
artplayer
FabioDev
leonardolopes
leonardolopes
gabrimo
JohnRambo
SteveRogers
Extreme Craft
eduardonog30
FabioDev
williangamesbr4021
joffersoju
marino96
luizrbizzio
leonardolopes
MayLeone
Dom3000
MayLeone
Lester3422
Fagner
samoliver1813
leonardolopes
daniel123163
Dimelus
marino96
Nowsfeky
LucasGamerFx
artplayer
samoliver1813
marino96
RafaelSquid1
gtcmcsgo
benhurgdll
natanael.olimpio
daniel123163
Tegh
nibirou
guirigottti
joffersoju
Dark_The_King
Fagner
poyser
Weslley
MayLeone
Fagner
vphyre
luizrbizzio
Gabriel Ferraz
billybmx
billybmx
MayLeone
gersoneson
Hamassfall
ReDsScript
diegopds
AnderGames
GabrielGelbcke
Fagner
gersoneson
gersoneson
poyser
TecnoGames
NKKF
Gutavex
alexalex
Okeizito
poyser
Socates
Magnatah
Gutavex
JohnRambo
conceptfac
NKKF
ericssv
dstaroski
Dom3000
RafaelSquid1
MayLeone
iToddy
Insurgente

[AULA] Encapsulamento

Ir em baixo

TUTORIAL [AULA] Encapsulamento

Mensagem por MayLeone em Qui Set 27, 2018 5:59 pm

[AULA] Encapsulamento Qual-rem%25C3%25A9dio-emagrece

O que é?
O encapsulamento em programação é conhecido como um dos pilares da programação orientada a objetos, do ato de encapsular, ou seja, proteger ou esconder algo.
Este conceito está muito ligado com relação à implementação de membros de classes, onde por vezes, se faz necessário a 'proteção' de algum atributo da mesma, ou simplesmente o desejo de querer esconder detalhes de implementação.
Com o encapsulamento, podemos restringir o acesso e a escrita dos atributos em classes, dando uma maior segurança e flexibilidade ao código.

Para ilustrar um exemplo de utilização do encapsulamento em C#, iremos criar uma classe pública chamada "Pessoa"e nela iremos definir três atributos quaisquer: nome, cpf e idade:


[AULA] Encapsulamento Untitled%2B1


Perceba que para esta classe, o modificador de acesso dos atributos é público, e por isso, eu posso manipular livremente os mesmos externamente, através da classe padrão "Program":


[AULA] Encapsulamento Untitled%2B2



Veja que da forma como está, podemos colocar valores à vontade no atributo (setar valores) e também podemos acessá-los (ler valores), através do Console.WriteLine, ou seja, esses atributos não estão encapsulados e possivelmente poderão ser manipulados de forma incorreta, como por exemplo, colocar um valor negativo para a idade:


[AULA] Encapsulamento Untitled%2B3


O código rodará sem problemas, pois o tipo da variável 'int' aceitará valores negativos, porém, sabemos que não há como alguém possuir uma idade negativa.
Esse acesso direto do atributo de uma classe pode se tornar um problema (como vimos acima), pois o seu acesso se encontra público.

Podemos tentar resolver este problema fazendo com que o modificador de acesso dos atributos se tornem privados, ou seja, apenas a própria classe poderá manipulá-los:


[AULA] Encapsulamento Untitled%2B4

Isso resolveria o nosso problema em partes, visto que os atributos possuem apenas acesso interno, mas agora eles não serão reconhecidos externamente, acarretando erros:


[AULA] Encapsulamento Untitled%2B5


Então devemos ter algo que seja o intermédio entre os atributos privados da classe, e o seu acesso externo.
Quem faz este trabalho são o que chamamos de métodos acessores:

Métodos acessores:
Os métodos acessores irão ser definidos na classe que possui os atributos que queremos ter acesso. Eles permitirão que possamos ler e escrever valores nos atributos privados da classe, sem que façamos tais procedimentos diretamente nos mesmos, criando assim, um maior controle no código.
Esses métodos devem ser públicos (para terem acesso externo) e consistem em devolver o valor de um atributo como retorno (get) ou permitir que coloquemos valores neles (set).
Vamos criar os métodos acessores dos atributos de nome e cpf:


[AULA] Encapsulamento Untitled%2B6



Note que os métodos 'Get' possuem um valor de retorno que é igual ao tipo do atributo a ser acessado e não possui parâmetros, sua única função é retornar o valor do atributo. Já os metódos 'Set' não possuem retorno e o parâmetro é do mesmo tipo daquele atributo, sua função é fazer com que o mesmo receba o valor do parâmetro passado.

Observe que agora podemos ler e escrever valores mesmo os atributos sendo privados, porém estamos fazendo isto de forma segura e sem realmente manipulá-los diretamente, pois os métodos acessores que estão implementados dentro da classe fazem esta tarefa, já que para ler um valor ou escrever precisamos obrigatoriamente chamá-los:


[AULA] Encapsulamento Untitled%2B7



Agora para implementarmos o atributo 'idade' podemos utilizar o método acessor 'Set' para restringir o valor negativo, dessa forma:


[AULA] Encapsulamento Untitled%2B8


O que fizemos aqui através do acessor 'Set' é impedirmos que um valor negativo seja colocado para o atributo de idade, realizando uma simples condição: caso o parâmetro passado for um valor negativo,  'idade' irá receber zero, caso não, receberá o valor do parâmetro passado, dessa forma, impedimos que nosso atributo seja utilizado de forma incorreta, veja:


[AULA] Encapsulamento Untitled%2B9

No output podemos perceber que a restrição está funcionando corretamente:



[AULA] Encapsulamento Untitled%2B10


Então além de protegermos o atributo ainda podemos criar regras de implementações para ele, eis então as vantagens do encapsulamento.

Properties:
Em C# temos também a sintaxe das Properties (propriedades), ou seja, palavras reservadas para podermos encapsular nossos atributos sem precisar escrever métodos.
Essas palavras reservadas estão ligadas aos métodos acessores Get e Set, então para escrever uma propriedade, basta fazer o seguinte:


[AULA] Encapsulamento Untitled%2B1


Para criar essa propriedade definimos a mesma como pública, com o mesmo tipo do atributo a ser acessado e com o nome semelhante, porém seguindo a notação Pascal Case que utilizamos para nomeação de métodos e classes. Dentro do escopo desta propriedade nós definimos os acessores Get e Set através das palavras reservadas, e então implementamos seus comportamentos: no Get apenas retornamos o valor do atributo desejado, enquanto no Set permitimos que algo seja escrito neste atributo.
A palavra reservada "value" pode funcionar como se fosse o parâmetro de um método, ou seja, o que foi inserido naquela propriedade através do acessor Set irá ser passado para 'value'.
*Implemente da mesma forma o atributo 'cpf'.

Podemos então implementar o atributo "idade" com aquela restrição que tínhamos visto anteriormente:


[AULA] Encapsulamento Untitled%2B2



E agora através das propriedades podemos fazer acesso externo aos membros da classe, sem precisar especificar seus métodos acessores:


[AULA] Encapsulamento Untitled%2B3



Auto Implemented Properties:
A partir da versão 3.0 do C# nós temos as propriedades auto implementadas, ou seja, um jeito mais compacto e menos trabalhoso de declarar as propriedades.
Para criar este tipo de propriedade, basta delimitar seu escopo às chaves {} e dentro delas apenas escrever as palavras reservadas "get" e "set", finalizando com ponto e vírgula, dessa forma:


[AULA] Encapsulamento Untitled%2B4

Veja que como as propriedades "Nome" e "Cpf" não possuem nenhuma implementação específica, podemos defini-las com as propriedades auto implementadas diretamente, o que deixa o código menor e dá menos trabalho para escrever, já a propriedade "Idade" fica como estava antes pois ela recebe uma implementação específica.

Modificador de acesso nos acessors:
Por padrão, os acessores das propriedades são definidos como públicos (public) mas se você quiser restringir esse acesso, por exemplo, fazer com que determinada propriedade possa apenas ser lida e não escrita, basta fazer com que o modificador de parâmetro do "set" fique privado, impedido acesso externo, ou seja, essa propriedade apenas poderá ser lida externamente e não poderá ser setada:


[AULA] Encapsulamento Untitled%2B5

Dessa forma, a propriedade "BonusSalarial" não poderá ter seu valor escrito (pois o set está private), mas poderá ser lida. Seu valor foi setado internamente através do construtor da classe.

Manipulando essa propriedade:


[AULA] Encapsulamento Untitled%2B6

Final:
E aqui chega mais um final de aula! Espero que tenham gostado e até a próxima.
MayLeone
MayLeone
Instrutor

Feminino PONTOS : 1286
REPUTAÇÃO : 345
Áreas de atuação : Unity & C#
Respeito as regras : [AULA] Encapsulamento Aad8pUi

http://compilemosfacil.blogspot.com.br

Voltar ao Topo Ir em baixo

TUTORIAL Re: [AULA] Encapsulamento

Mensagem por Callyde Jr em Sex Set 28, 2018 11:37 am

Muito boa aula Smiling Face.
Parabens abraços.
Callyde Jr
Callyde Jr
Programador

Masculino PONTOS : 3158
REPUTAÇÃO : 405
Idade : 40
Áreas de atuação : Iniciante em modelagem Blender,ScketSHUP
Progamador
Ideialista

Meu Canal
https://www.youtube.com/ch
Respeito as regras : [AULA] Encapsulamento WvDYdlf

http://unnygames.000webhostapp.com/

Voltar ao Topo Ir em baixo

TUTORIAL Re: [AULA] Encapsulamento

Mensagem por Tegh em Sex Set 28, 2018 10:14 pm

Muito bem detalhada, gostei que você pega afundo os aspectos, eu sempre me contesto quando penso em usar private em algum código (as vezes penso em algo relenvante a termos de processamento), mas é minha cabeça mesmo. Foi uma ótima aula, até.
Tegh
Tegh
ProgramadorMaster

Masculino PONTOS : 774
REPUTAÇÃO : 94
Idade : 18
Áreas de atuação :
Programador intermediário de C#;
Conhecedor da plataforma .NET Framework/Core e Unity;
Respeito as regras : [AULA] Encapsulamento Aad8pUi

Voltar ao Topo Ir em baixo

TUTORIAL Re: [AULA] Encapsulamento

Mensagem por dstaroski em Sab Set 29, 2018 1:26 pm

Muito bom mesmo! parabéns ai!
dstaroski
dstaroski
Instrutor

Masculino PONTOS : 4401
REPUTAÇÃO : 1104
Idade : 30
Áreas de atuação : Desenvolvedor .NET Jr. ,Téc. Hardware e Redes, Programação C#, Asp .NET, HTML, CSS, Unity 3D

Respeito as regras : [AULA] Encapsulamento Aad8pUi

http://diegodeoliveira.gamejolt.io/defeattheilluminatis

Voltar ao Topo Ir em baixo

TUTORIAL Re: [AULA] Encapsulamento

Mensagem por Nalfam em Dom Set 30, 2018 10:46 am

Boa! Mto obrigado!
Nalfam
Nalfam
MembroAvançado

Masculino PONTOS : 550
REPUTAÇÃO : 24
Áreas de atuação : Unity
Respeito as regras : [AULA] Encapsulamento WvDYdlf

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