Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 12 Out/2016
3.18. Arranjos/Array - Unidimensional Declaração de arranjos: <tipo[]> <nome> = <new tipo [dimensão]>; Cada elemento do arranjo deve ser acessado independentemente. Representação: Indice Dia Temperatura Int[] Temp = new int[4]; 0 Segunda 30 1 Terça 31 2 Quarta 32 3 Quinta 31
3.18. Arranjos - Unidimensional Exercício 15 Indice Dia Temperatura 0 Segunda 30 1 Terça 31 2 Quarta 32 3 Quinta 31... static void Main(string[] args) int[] Temp = new int[4]; int I; // preenche com os valores for (I = 0; I <= 3; I++) Console.Write("Digite a temperatura para o dia da semana 0 temperatura: ", I + 1); Temp[I] = int.parse(console.readline());... // escreve os valores for (I = 0; I <= 3 ; I++) Console.Write(" No dia 0 ", I); Console.Write(" a temperatura foi 0. ", Temp[I]); Console.WriteLine(); Console.Write("Pressione ENTER para fechar."); Console.ReadKey();
3.18. Arranjos - Unidimensional Exercício 42
3.19. Arranjos - Multidimensional Exercício 18 // Um vetor de duas dimensoes int[,] vetor2d = new int[,] 1, 2, 3, 4, 5, 6, 7, 8 ; // Um vetor de duas dimensoes com dimensoes especificadas int[,] vetor2da = new int[4, 2] 1, 2, 3, 4, 5, 6, 7, 8 ; // Mostrando os elementos de um vetor System.Console.WriteLine("Posicao 0x0: 0 ", vetor2d[0, 0]); System.Console.WriteLine("Posicao 0x1: 0 ", vetor2d[0, 1]); System.Console.WriteLine("Posicao 1x0: 0 ", vetor2d[1, 0]);
3.20. Estrutura de registro Sintaxe: Struct [<nome_do_identificador>] <qualificador> <lista de tipos de seus membros>; ; <nome identificador> <variável>; Exemplo vetorial struct Carro public string Modelo; public string Placa; public string Ano; Carro Veiculo = new Carro[2]; Exemplo de acesso simples struct Carro public string Modelo; public string Placa; public string Ano; Carro Veiculo;
Exercício 16
3.21. Enumeração enum diassemana segunda, terca, quarta, quinta, sexta, sabado, domingo Exercício 19 public class enumerados public enum diassemana segunda, terca, quarta, quinta, sexta, sabado, domingo public void dias(diassemana nomedia) switch (nomedia) case diassemana.segunda: Console.WriteLine("1. Segunda"); break; case diassemana.terca: Console.WriteLine("2. Terca"); break; case diassemana.quarta: Console.WriteLine("3. Quarta"); break; case diassemana.quinta: Console.WriteLine("4. Quinta"); break; throw new Exception("Dias invalidos!"); class Program static void Main(string[] args) enumerados enum1 = new enumerados(); enum1.dias(enumerados.diassemana.segunda); Console.ReadKey();
3.22. Tratamento de erros Exercício 17 Try O código que PODERÁ gerar erro Catch (Exceção Tipo) Código para o tratamento da exceção Finally Código para finalização class Program static void Main(string[] args) try int val = 100; int div = 0; int resultadoval; resultadoval = (val / div); Console.WriteLine(); Console.WriteLine("Resultado : " + resultadoval); Console.WriteLine(); catch (System.Exception ex) Console.WriteLine(); Console.WriteLine("Detalhes da execcao...: " + ex.tostring()); Console.WriteLine(); finally Console.WriteLine(); Console.WriteLine("Bloco de finalizacao "); Console.WriteLine(); Console.ReadKey();
3.23. Códigos em vários arquivos New Item... Exercício 20
3.23. Códigos em vários arquivos Exercício 20
3.23. Códigos em vários arquivos Exercício 20
3.23. Códigos em vários arquivos Exercício 20
3.23. Códigos em vários arquivos Existing Item... Exercício 20
3.23. Códigos em vários arquivos Exercício 20
3.23. Códigos em vários arquivos Troque o Namespace! ATENÇÃO: ALTERE NOME PARA STRING! Exercício 20
3.23. Códigos em vários arquivos Exercício 20
3.24. Conversão de tipos Exercício 21
3.25. Break points É um ponto de parada na execução dos códigos de um programa. Esse ponto de para é inserido em tempo de projeto pelo programador imediatamente antes da parte do código de interesse que se deseja ser investigada ou que pode estar apresentando problemas. Os breakpoints pode ser: inseridos, desabilitados ou deletados pelo programador. Para inserir um break point, clique no código com o botão da direita Breakpoint insert breakpoint. Exercício 21
3.25. Break points Este círculo vermelho indica que o breakpoint foi implementado. Exercício 21
3.25. Break points Exercício 21
3.25. Break points Debug Continue (ou F5) para continuar após o break point Exercício 21
3.26. Trabalhando com strings Exercício 22
3.27. Trabalhando com arquivos - Classes Em todos os programas que usem as classes a seguir deve incluir: using System.IO;
3.27. Trabalhando com arquivos Exercício 29
3.27. Trabalhando com arquivos Exercício 32
3.27. Trabalhando com arquivos Exercício 33
3.27. Trabalhando com arquivos Exercício 34
3.27. Trabalhando com arquivos - DriveInfo Exercício 35
3.27. Trabalhando com arquivos Exercício 36
3.28. Métodos matemáticos Exercício 23
Fim da parte 3!
Parte 4: Programação orientada a objeto com C# (utilizando C#) Professor Emiliano S. Monteiro
4.1. Classe em C# - Definição Definição de classe: public class Cliente //Atributos e métodos Criando um objeto: Cliente Ana = new Cliente();
4.1.1. Definição de atributos class Pessoa string Nome; int Idade; Int NotaDeIngles; int NotaDeRedacao; int DescontoMensalidade = 300 string Curso; // Definição e inicialização/atribuição
4.1.2. Definição de Métodos <tipo de retorno> <nome do método> (<tipo de dado> <identificador>, <tipo de dado> <identificador>,...) // corpo do método Exemplo: int EncontrarSomatoria(int Numero1, int Numero2) int soma = Numero1 + Numero2; return soma;
4.1.3. Tipos de classe no C# Abstract: Uma classe abstrata significa que, nenhum objeto desta classe pode ser instanciado, mas pode fazer a derivação deste. Ele pode servir ao propósito de classe base apenas quando nenhum objeto desta classe pode ser criado. Classe abstrata é denotado pela palavra-chave abstract. Partial: Este tipo especial de classe chamada "classe parcial" foi introduzido com o.net Framework 2.0. Classe parcial permite aos seus membros - método, propriedades e eventos - a serem divididos em vários arquivos de origem (cs). Em tempo de compilação esses arquivos são combinados em uma única classe. Classe parcial é indicado pela palavra-chave partial.
4.1.3. Tipos de classe no C# Sealed: Uma classe selada é uma classe que não pode ser herdada. Uma classe selada não pode ser uma classe base. O resumo modificador não pode ser aplicado a uma classe selada. Por padrão, struct (estrutura) está selado. É a última classe na hierarquia. Para acessar os membros de uma classe selada, você deve criar objetos dessa classe. Classe selada é denotado pela palavra-chave sealed. Static: Uma classe estática é uma que não pode ser instanciada. A nova palavra-chave não pode ser usada com classes estáticas como membros dessa classe pode ser chamado diretamente usando o próprio nome da classe. A classe estática só pode ter membros estáticos. A classe estática não pode ser instanciada. A classe estática é selada, por isso não pode ser herdada. A classe estática não pode ter um construtor (exceto construtor estático). A classe estática é denotada pela palavra-chave static.
4.1.4. Instanciação de classes (criando objetos) Exemplo 1: Cliente Ana = new Cliente(); Exemplo 2: Cliente Ana; Ana = new Cliente(); Esta forma é similar a instanciação e atribuição de valores em variáveis: int i; i = 4; O exemplo 1 e o exemplo 2 são equivalentes!! No exemplo 2, a primeira linha apenas declara uma referência de Ana para o tipo Cliente, o qual até o momento não contém nenhum objeto, apenas aponta para o valor null, se tentar acessar uma propriedade resultará em erro.
4.1.5. Acessando os membros de uma classe class aluno //--- definicao de campos ------------------ string nome; int idade; int notamat; int notabio; int notaport; int totalnotas = 3; int notaobtida; double porcentagem; static void Main(string[] args) //--- criacao de uma nova instancia de Aluno ---- aluno aluno1 = new aluno(); //--- definindo valores para os campos ---- aluno1.nome = "Bill"; aluno1.idade = 20; aluno1.notamat = 80; aluno1.notabio = 70; aluno1.notaport = 85; Exercício 200 //--- definicao de metodos --------------------- void calculatotalnotas() notaobtida = notamat + notabio + notaport; double CalculaPorcentagem() porcentagem = (notaobtida * totalnotas) / 100; return porcentagem; double obterporcentagem() return porcentagem; //--- chamando as funcoes aluno1.calculatotalnotas(); aluno1.calculaporcentagem(); aluno1.obterporcentagem(); Console.WriteLine(" 0 de 1 idade tem 2% notas", aluno1.nome, aluno1.idade, aluno1.porcentagem); Console.ReadKey(); // finaliza Main // finaliza a classe aluno
4.1.5. Acessando os membros de uma classe Exercício 200
4.1.5.1. Modificadores de acesso Modificadores de acesso private protected internal internal protected public Descrição Membros privados podem acessar somente dentro da classe que os contém. Este tipo de membro pode ser acessado do projeto atual ou de qualquer tipo herdado da classe a qual esta contido. Só pode ser acessado no projeto atual. Pode ser acessado da classe a qual é contido e tipos herdados da classe a qual é contido. Não possuem restrição acesso a qualquer um, qualquer um pode ver e acessá-los.
É recomendado marcar todos os seus campos como privados e permitir que os usuários de sua classe tenham acesso apenas aos métodos públicos. Por exemplo, na classe estudante os campos seriam privados e os métodos públicos. Se você não marcar nenhum membro da classe como modificadores de acesso, eles serão tratados como membros privados. Modifique o exercício anterior para que com atributos privados e métodos públicos.