![Page 1: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/1.jpg)
C# 2.0
Paulo Marques
Hernâni Pedroso
![Page 2: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/2.jpg)
C# 2.0
![Page 3: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/3.jpg)
1 - Introdução
![Page 4: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/4.jpg)
2 - Elementos Básicos
![Page 5: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/5.jpg)
Lembre-se• Existem comentários de linha (//) e de múltiplas linhas (/* ... */)• As variáveis são declaradas escrevendo o tipo, seguido do nome da
variável• Podem-se iniciar as variáveis quando estas são declaradas• As variáveis têm de ser iniciadas antes de serem utilizadas
(referenciadas), sob pena de haver erro de compilação• As variáveis podem ser declaradas em qualquer ponto do código• O método Console.WriteLine() aceita um número variável de
parâmetros, sendo cada parâmetro representado por {n} na cadeia de caracteres enviada a tela. n representa o número do parâmetro em questão (iniciado com 0)
![Page 6: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/6.jpg)
Lembre-se
• Os tipos de dados numéricos mais utilizados são int, para valores inteiros, e double para valores reais
![Page 7: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/7.jpg)
Lembre-se• As variáveis lógicas são representadas pelo tipo bool• Uma variável lógica só pode ter dois valores: true ou false• Os caracteres são representados pelo tipo char• os literais de caracteres são especificados usando aspas simples• as seqüência de escape permitem representar caracteres
especiais, começando sempre pelo caractere “\”• As cadeias de caracteres (strings) são representadas pelo tipo
string• Os limites das cadeias de caracteres são especificados entre aspas• As cadeias de caracteres são na verdade objetos, aos quais é
possível aplicar diversos métodos e operadores, assim como examinar as suas propriedades
![Page 8: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/8.jpg)
Lembre-se - Constantes
• As constantes são declaradas com a palavra-chave const
• as constantes tem de ser inicializadas quando são declaradas e nunca mudam de valor
• as constantes podem ser declaradsa em qualquer ponto do código
![Page 9: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/9.jpg)
Lembre-se - Operadores
![Page 10: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/10.jpg)
Lembre-se - Controle do fluxo de execução
![Page 11: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/11.jpg)
Lembre-se - Vetores
• Para criar um vetor, utiliza-se a expressão:
tipoDoVetor[] nomeDoVetor = new tipoDoVetor[tamanho];
• Para acessar um elemento, basta indicar o seu índice entre colchetes:
nomeDoVetor[elemento]
![Page 12: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/12.jpg)
Exemplo
• double alturas[] = new double[10];
• // Coloca o valor 1.77 na posição 3 do vetor
• alturas[3]=1.77;
![Page 13: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/13.jpg)
Lembre-se - Matrizes Multidimensionais e matrizes
dentro de matrizes
![Page 14: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/14.jpg)
Parte I - A linguagem C#
![Page 15: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/15.jpg)
3 - Conceitos de Orientação a Objetos
![Page 16: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/16.jpg)
Linguagem estruturada x Linguagem OO
• linguagens estruturada
• Exemplos: C e Pascal• Décadas de 70 e 80
• linguagens OO• Exemplos: C++, Java,
Delphi e SmallTalk• anos 90 ...
![Page 17: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/17.jpg)
Linguagens Estruturada
• Modelo de programação simples
• programador pensa numa ou mais estruturas de dados que lhe modelem o problema e, sem seguida, desenvolve um conjunto de operações (funções) que atuam sobre essa estrutura de dados
• Programa = Estrutura de dados + Algoritmos
![Page 18: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/18.jpg)
Modelo de Programação Estruturada
Estrutura de dados
Operação F() Operação I()Operação H()Operação G()
Programa = Estrutura de dados + Algoritmos
![Page 19: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/19.jpg)
Programação Orientada a Objetos
• Em POO, o programador pensa em termos de objetos que modelam o seu problema e nas relações entre eles
• Programas = Objetos + Relações
![Page 20: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/20.jpg)
Modelo da programação orientada a objetos
Dados
Dados
Operação F()
Operação G()
Dados
Operação H()
Operação I()
Operação J()
Programa = Objetos + Relações
Objeto A
Objeto B
Objeto C
![Page 21: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/21.jpg)
Conceitos Básicos
• encapsulamento de informação
• composição/herança
• polimorfismo
![Page 22: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/22.jpg)
Encapsulamento da Informação
• Refere-se ao fato de as estruturas de dados serem entidades privadas de cada classe, devendo ser apenas acessadas por elementos da própria classe
![Page 23: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/23.jpg)
Classes
• Uma classe representa um tipo abstrato de dados (TAD) - famílias de entidades
• Uma classe representa uma família de objetos enquanto um objeto representa uma instância da dessa família
![Page 24: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/24.jpg)
Exemplo
Empregado é uma classe, enquanto a entidade que representa “José Antônio” é um objeto da classe Empregado
![Page 25: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/25.jpg)
Composição e Herança
• Cada classe tem uma determinada responsabilidade e representa uma entidade completa concreta do mundo real
• Cada classe terá seus dados e métodos
• Composição e herança são tipos de relações que podem existir entre objetos (e classes)
![Page 26: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/26.jpg)
Relação de Composição
• tem um, contém (has-a)
![Page 27: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/27.jpg)
Relação de Herança
• é um (is-a)
![Page 28: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/28.jpg)
Polimorfismo
• Capacidade de diferentes objetos se comportarem de forma diferente quando o mesmo método é invocado neles
![Page 29: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/29.jpg)
Conceitos básicos de OO
• Diferentes instâncias de uma classe tem variáveis diferentes. As instancias são criadas com o operador new
• Ao criar um novo objeto, o construtor da classe é chamado. O construtor tem o mesmo nome que a classe e não tem valor de retorno
• Se um elemento da classe é declarado private, então é visível apenas para os elementos dessa classe
• Se um elemento da classe é declarado public, então é visível para o exterior da classe
![Page 30: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/30.jpg)
Conceitos básicos de OO
• Os dados da classe devem, em regra geral, ser privado. Apenas o menor número possível de métodos da classe deve ser público
• Uma relação de composição surge quando uma classe tem de conter um objeto de uma outra classe (exemplo: “automóvel contém motor”)
• Uma relação de herança surge quando um objeto também é uma instância de uma outra classe mais geral (“automóvel é um veículo”)
![Page 31: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/31.jpg)
Conceitos básicos de OO
• Uma relação de herança indica-se por:
ClasseDerivada : ClasseBase { ... }• É sempre possível utilizar um referência de uma
classe mais acima na hierarquia de derivação para um objeto de uma classe derivada dessa
• Para existir polimorfismo, os métodos na classe-base têm de ser declarados virtual e nas classes derivadas têm de ser declarados override
![Page 32: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/32.jpg)
4 - Programação Orientada a Objetos
![Page 33: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/33.jpg)
5 - Exceções
![Page 34: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/34.jpg)
6 - Programação Baseada em Componentes
• Um componente é uma unidade reutilizável de software, tipicamente com fronteiras bem definidas, sendo encapsulado em um invólucro binário
• Do ponto de vista de programação, um componente corresponde a uma classe
![Page 35: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/35.jpg)
Elementos que suportam a utilização e interligação a outros
componentes:• Propriedades
• Métodos
• Eventos
![Page 36: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/36.jpg)
Propriedades
• Funcionam como variáveis públicas• Uma propriedade se declara como se fosse um
campo normal, mas adicionado de um corpo. Nesse corpo, existem pelo menos um dos seguintes métodos: get e set. O get é invocado quando se está obtendo o valor da propriedade; o set é invocado quando se está modificando o valor da propriedade. O método set possui uma variável implícita (value) que contém o novo valor da propriedade
![Page 37: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/37.jpg)
Propriedades
• A estrutura de uma propriedade é:
public TipoDaPropriedade NomeDaPropriedade
{
get { // obtém o valor da propriedade }
set { // modifica o valor da propriedade }
}
![Page 38: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/38.jpg)
Propriedades
• Uma propriedade não é necessariamente pública. Pode ter qualquer nível de acesso. Uma propriedade também pode ser estática, virtual ou abstrata, como se tratasse de um método.
![Page 39: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/39.jpg)
Eventos
• O sistema de eventos é baseado em dois conceitos básicos: – produtores de eventos e – consumidores de eventos
![Page 40: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/40.jpg)
Delegates
![Page 41: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/41.jpg)
Atributos
• São mecanismos que permitem realizar a “programação declarativa”
![Page 42: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/42.jpg)
Elementos aos quais se podem aplicar atributos
Especificador Descrição
assembly
module
type
method
property
event
field
param
return
![Page 43: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/43.jpg)
7 - Tópicos Avançados
![Page 44: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/44.jpg)
Parte II - .NET Essencial
![Page 45: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/45.jpg)
8 - Classe Base
![Page 46: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/46.jpg)
9 - Execução Concorrente
![Page 47: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/47.jpg)
10 - Acesso a Internet
![Page 48: C# 2.0 Paulo Marques Hernâni Pedroso. C# 2.0 1 - Introdução](https://reader035.vdocuments.pub/reader035/viewer/2022062318/552fc0f9497959413d8b81eb/html5/thumbnails/48.jpg)
11 - Explorações Futuras