Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aula 1 – Começando do Básico em C# ESZI043 – Programação Baseada em Componentes Para Jogos Prof. Mário Minami 3Q18 Keywords (Palavras-Chave) • Símbolos ou Palavras especiais, que fazem compilador executar tarefas específicas, por exemplo, a keyword class no começo de uma linha informa ao compilador que estamos criando uma classe. Uma declaração de classe é a linha de código que dirá isso ao compilador. class Minami { } • Cada classe necessita um nome, como no exemplo, Minami. Neste caso a palavra Minami torna-se um novo identificador. Isto será assumido pelo compilador dentro dos limites do escopo deste identificador (enquanto ele existir). ESZI043 - PBCJogos - Minami 2 Classe • Para criar uma classe chamada de Minami usamos a keyword class, que deve preceder a palavra que será o novo identificador para a classe a ser criada. • O Conteúdo de Minami é definido entre as chaves. Após a definição da classe, o abre chaves { é seguido pelas atribuições que Minami necessitará para tornar-se Minami de fato. Ao final das definições apropriadas dos conteúdos de Minami, o fecha chaves } indicará o término da definição da classe Minami. class Minami {} • Duas classes não podem compartilhar o mesmo nome, nem ter espaço em branco no nome. ESZI043 - PBCJogos - Minami 3 Maiúsculas e Minúsculas Keywords sempre começam com letras minúsculas pois C# diferencia das maiúsculas: Class e class são distintas e possuem significados diferentes. • A primeira poderia ser um identificador e a segunda é uma keyword! 01 Uma prática comum é começar as declarações de classe e deixá-las vazias, para definir os identificadores a serem usados. 02 Mas a classe Minami ainda não pode ser usada pelo Unity3D, pois carece das informações mínimas para isso. 03 Exemplo de Código que o Unity3D “roda” using UnityEngine; using System.Collections; public class Exemplo: MonoBehaviour { //Usar isto para inicialização void Start () { } //Atualizada a cada frame void Update () { } } ESZI043 - PBCJogos - Minami 5 Outras boas práticas: • Espaços em branco para separar identificadores • Comentários para descrever as linhas • Mudança de linha para organizar as classes • Tabulação para deixar claro o que está dentro de cada classe void MinhaFuncao(){} void OutraFuncao(){} • É executada igualmente que void MinhaFuncao() { // A primeira função } void OutraFuncao() { // A segunda função } • Mas do segunda maneira, parece um programador educado... ESZI043 - PBCJogos - Minami 6 Blocos de Código • Blocos são coleções de declarações agrupadas para serem executadas • A execução do código é usualmente controlada pelas chaves {}. • Uma boa prática é agrupar blocos na mesma tabulação, para facilitar a leitura do código. void MinhaFuncao() { // primeiro bloco de código int i = 0; int j = 17; while (i < 10) { // segundo bloco de código print(i); i++; if (j < 20) { // terceiro bloco de código j++; i++; } } } ESZI043 - PBCJogos - Minami 7 Classes parciais e aninhadas Uma classe é uma coleção de instruções e dados Algumas classes são chamadas de parciais para serem divididas em vários arquivos diferentes e facilitar o uso por outros programadores Outras classes podem aparecer dentro de outras e são chamadas de aninhadas As instruções podem ser referenciadas como funções ou métodos O dado armazenado numa classe é um campo ou propriedade Classes são flexíveis e facilmente modificáveis, mas esta flexibilidade requer um pouco de complexidade ESZI043 - PBCJogos - Minami 8 Exemplo de partial class public partial class Empregado { public void Trabalhando() { } } public partial class Empregado { public void Almocando() { } } ESZI043 - PBCJogos - Minami 9 Exemplo de classe aninhada class Conteiner { class Aninhada { Aninhada() { } } } ESZI043 - PBCJogos - Minami 10 Objetos Instanciados POO foi inventada para associar dados e lógica nos mesmos pacotes de código Uma classe escrita cria modelos e instruções para um novo objeto Qualquer cópia de objetos pode ser construída usando os modelos Instanciar é criar um objeto de uma classe modelo Cada objeto instanciado é uma instância da classe que foi escrita Uma classe em si não é uma instância criada dela mesma, ou seja ela não é um objeto, apenas um plano para fazermos objetos. Uma classe pode criar mais de uma instância de um objeto, e quando isto ocorre temos o processo de instanciamento. ESZI043 - PBCJogos - Minami 11 Mensagens, Eventos, Abstração, Encapsulamento e Interface Uma instância de um objeto comunica-se com outro objeto através de mensagens e eventos 01 Num telefone fixo, temos acesso ao fone, às teclas, ao botão do gancho etc. Não temos acesso à sua placa interna com seus componentes eletrônicos. Interagimos com uma Abstração do telefone, suficiente para o uso. 02 A abstração nos apresenta somente as partes necessárias ao uso da classe e nos oculta as restantes, que ficam escondidas, ou encapsuladas. 03 A interação com uma classe é feita pela Interface (como os botões do telefone fixo) 04 ESZI043 - PBCJogos - Minami 12 Polimorfismo, Herança e Agregação • Partes de um telefone fixo poderiam ser aproveitados num telefone celular e assim também elementos de código, ou classes podem ser reaproveitados num programa para outras aplicações, mesmo que tenham que ser alterados para isso em outros dispositivos (componentes) e quando isso ocorre temos o Polimorfismo. • A Herança permite que classes compartilhem atributos e comportamentos semelhantes. • Agregação de classes diferentes permite que uma única classe agregue muitos componentes ou classes diferentes. ESZI043 - PBCJogos - Minami 13 Variáveis seus identificadores e das classes • Programação é combinação de comportamento e dados • Variáveis são poucos bits de informação de aspectos do mundo real: gravidade, velocidade, intensidade da luz, cor... • O nome de uma variável é um identificador. • Uma boa prática de programação é escolher bons identificadores para as variáveis, diferentes de x, y, z, i, j, k, principalmente para as classes, para fugir de Minami ESZI043 - PBCJogos - Minami 14 Tipos de dados e declaração de variáveis • Variáveis podem receber dados diferentes, logo o compilador necessita saber qual tipo de dado será (nome, valor, bit lógico, etc) ESZI043 - PBCJogos - Minami 15 Declaração de Variáveis: Sempre dentro de uma classe class UmaClasse { int UmNumero; } ✓ OK int UmNumero; class UmaClasse { } X Erro na Compilação! • Declarar e atribuir o valor na mesma linha de instrução é a inicialização dinâmica: class UmaClasse { int UmNumero = 0; } ESZI043 - PBCJogos - Minami 16 Nomes de Variáveis • Muito grandes são difíceis de lembrar e fácil de errar a digitação • Só abreviaturas geram confusão e falta de clareza • Não podem começar com números • Não podem ter espaço em branco no meio • Alguns caracteres reservados são proibidos: $, - , ^ • Letra Maiúscula e Minúscula são notadas diferentes • @ pode começar o nome, mas não no meio ESZI043 - PBCJogos - Minami 17 Variáveis no Unity3D • Criando um Projeto UsandoVariaveis 3D no Unity3D • Criando um script Exemplo: • As variáveis SomeInt e OutroIntNão aparecem no Inspector, pois estão encapsuladas. • Para serem uma Interface, temos de usar a keyword “public” ESZI043 - PBCJogos - Minami 18 Acesso pelo Inspector: • Alterar o código incluindopublic modificando a definição das variáveis: • Crie um Cube em Hierarchy • Anexe o script ao Cube, arrastando-o no Inspector ESZI043 - PBCJogos - Minami 19 Atribuições de Variáveis • O script Variaveis ao lado inicializa MinhaVariavel e atribui valor a ele outras três vezes • Associando este script a Cube, teremos: ESZI043 - PBCJogos - Minami 20 Transformações • Inserindo uma Sphere em Hierarchy e um novo Script ControleEsfera ESZI043 - PBCJogos - Minami 21 Usando Control... • A posição em x da esfera será Control • A posição em y será 2*Control • A posição em z será Control2 • Verificar, mudando Control em Inspector ESZI043 - PBCJogos - Minami 22 OutroControl: • Inserindo outra variável public: public float OutroControl; • Colocando em OutroControl um valor diferente de 0 e, variando Control (pode ser com posicionando a sete do mouse no caixa da variável, pois ela funciona como um botão “slider” • Qual o movimento da Esfera? ESZI043 - PBCJogos - Minami 23 Introdução aos tipos de dados • bool ... 8 bits • char ... 8 bits • string ... Conjuntos de char • int, float ... 32 bits, mas usados diferentemente. Existe int64 • double ... 64 bits • objeto ... Tamanho variável, no mínimo 8 bits (máx a princípio não há) ESZI043 - PBCJogos - Minami 24 Casting: força a conversão de tipos float a = 0.9f; int b = (int) a; ESZI043 - PBCJogos - Minami 25 Comentários numa linha • Um comando que inicia com a dupla barra // à esquerda e não será compilado, ou seja, não gera erro: // aqui começa um comentário • Pode ser depois do código: int u = 0; // zera variável • Tudo o que aparecer depois do // até o fim da linha, será ignorado pelo compilador ESZI043 - PBCJogos - Minami 26 Comentários multilinhas • Um comentário de várias linhas pode começar com // em cada uma, ou /* e */, para iniciar e terminar: /* Este é um comentário de mais de uma Linha e não precisa de um // em cada Início de linha */ • Mesmo dentro de uma instrução, tudo o que estiver dentro do /* e */ será ignorado: while (algumInt < /*10*/ 100) { // O 10 é ignorado! print(algumInt); algumInt++; } ESZI043 - PBCJogos - Minami 27 Colapsar comentários multilinhas e Sumário • Quando um comentário multilinhas inicia com /* e termina com */ Ele poderá ser colapsado (ocultado) no editor: • Digitando /// o editor inclui um campo de Sumário, que também pode ser ocultado: ESZI043 - PBCJogos - Minami 28
Compartilhar