55

Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira [email protected]

Embed Size (px)

Citation preview

Page 1: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br
Page 2: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Intodução a C#Tecnologias Web

Enrique Pimentel Leite de Oliveira

[email protected]

Page 3: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Agenda• Introdução a plataforma .Net• Processo de compilação• O que é o C#?• Sintaxe do C#• Variáveis• Constantes• Tipos de Dados Simples e Complexos• Operadores• Estruturas de Decisão e Laços• POO no C#

Page 4: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Visão Geral da plataforma .NET• Desafios

– Integração entre aplicações;– Comunicação entre diferentes plataformas, dispositivos de

hardware, sistemas operacionais e linguagens de programação.• Características

– Plataforma de desenvolvimento de aplicações (Windows e Web) que possui um ambiente único de execução e gerenciamento (CLR);

– Permite a interoperabilidade entre as linguagens;– Definida sobre os padrões e protocolos como: XML, WSDL,

SOAP e HTTP;

Page 5: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Visão Geral da plataforma .NET• Características

– Plataforma de desenvolvimento de aplicações (GUI e Web) que possui um ambiente único de execução e gerenciamento de código (CLR);

– Independência de sistema operacional e linguagens de programação;

– Capacidade de interoperabilidade entre as linguagens;

– Definida sobre os padrões e protocolos como: XML, WSDL, SOAP e HTTP;

Page 6: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

.NET Framework• Coração da plataforma

– Suporta o desenvolvimento de aplicações orientado à objetos e Internet;

– Modelo unificado de programação;– Formada por uma grande biblioteca de códigos

reutilizáveis;– Responsável pela execução, gerenciamento e

segurança do código;• Principais módulos

– Common Language Runtime (CLR);– .Net Base Class Library

Page 7: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

.NET Framework• Arquitetura da .NET Framework

Page 8: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Introdução a plataforma .NET

Base Class Library

Common Language Specification

Common Language Runtime

Data and XML

VB C++ C#

Visu

al S

tud

io.N

ET

ASP.NET

JScript …

Windows Forms

Page 9: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Utilizando Classes da Framework

System

System.Data System.Xml

System.Web

GlobalizationDiagnosticsConfigurationCollections

ResourcesReflectionNetIO

ThreadingTextServiceProcessSecurity

DesignADO

SQLTypesSQL

XPathXSLT

RuntimeInteropServicesRemotingSerialization

Serialization

Configuration SessionStateCaching Security

ServicesDescriptionDiscoveryProtocols

UIHtmlControlsWebControls

System.Drawing

ImagingDrawing2D

TextPrinting

System.Windows.Forms

Design ComponentModel

Page 10: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

CLR• Ambiente de execução das aplicações responsável

pelo gerenciamento do código .NET• Características

– Compilação do código fonte para IL (Intermediate Language);

– Utilização de compilador JIT (Just-in-Time) para converte código IL em código nativo;

– Suporte e Integração entre as múltiplas linguagens;– Segurança de código;– Gerenciamento do ciclo de vida dos objetos (Garbage

Collector);– Componentes audescritivos (assembly);

Page 11: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Compilação na plataformaCompilação na plataforma• Processo de compilação e execução

Assembly

Page 12: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Compilação na plataforma• Processo de compilação e execução

Assembly

Page 13: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

O que é o C#?• Uma das linguagens que podem ser usadas para

criar aplicativos executados no .NET CLR• É uma evolução das linguagens C e C++• Criada especificamente para a plataforma .NET• Projetada para utilizar os melhores recursos de

outras linguagens e resolver problemas dessas linguagens

• É a pioneira das linguagens projetadas para o .NET Framework

Page 14: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Características do C#• Completamente orientada a objetos

– Suporta interfaces, sobrecarga, herança, atributos, propriedades, coleções, etc.

– Tudo é um objeto (System.Object)• Fortemente Tipada• Gera código gerenciado• Suporte a código legado (COM e DLL’s)• Permite desenvolver código não gerenciado

Page 15: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Sintaxe C# Básica• Semelhante ao C++ e Java• Compilador ignora espaços, quebra de linha e

caracteres de tabulação• C# é uma linguagem estruturada em blocos. Esses

blocos são delimitados por chaves (“{” e “}”)• C# diferencia maiúsculas e minúsculas• Comentários:

– Linha: iniciar a linha com “//”– Bloco: iniciar o bloco com “/*” e finalizar com “*/”

Page 16: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Variáveis• Regras de Nomenclatura

– O primeiro caractere deve ser uma letra ou um sublinhado (“_”) ou “@”

– Os caracteres subseqüentes podem ser letras, sublinhados ou números

• Declaração– <tipo> <nome>;int idade;

• Atribuição– Utiliza-se o operador de atribuição (=)idade = 26;

Page 17: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Constantes• Nativas

– null– true– false

• Definidas pelo programador– const <tipo> <nome> = <valor>;const string myString = “.NET”;

Page 18: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Tipos SimplesTipo Apelido de Valores Permitidos

sbyte System.SByte -128 a 127

byte System.Byte 0 a 255

short System.Int16 -32768 a 32767

ushort System.UInt16 0 a 65535

int System.Int32 -2147483648 a 2147483647

uint System.UInt32 0 a 4294967295

long System.Int64-9223372036854775808 a 9223372036854775807

ulong System.UInt64 0 a 18446744073709551615

Page 19: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Tipos SimplesTipo Apelido de Valores Permitidos

float System.Single 1,5x10-45 a 3,4x1038

double System.Double 5,0x10-324 a 1,7x10308

decimal System.Decimal 1,0x10-28 a 7,9x1028

char System.Char Caracteres Single Unicode (0 a 65535)

bool System.Boolean true ou false

string System.String Uma seqüência de caracteres

Page 20: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Tipos Complexos• Enumerações

– Permite criar um tipo de dado que aceita apenas um valor dentre um conjunto fixo de possibilidades

enum orientacao : byte{

norte = 1,sul = 2,leste = 3,oeste = 4

}orientacao minhaDirecao = orientacao.norte;

Page 21: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Tipos Complexos• Estruturas

– Permite criar um tipo de dado através da combinação de outros tipos de dados simples e complexos

struct rota{

public orientacao direcao;public double distancia;

}rota minhaRota;minhaRota.direcao = orientacao.norte;minhaRota.distancia = 2.5;

Page 22: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Tipos Complexos• Arrays

– São listas indexadas de variáveis– Os membros individuais de um array são

chamados de elementos– Todos os elementos de um array são do mesmo

tipo (tipo-base)– Podemos acessar cada elemento de um array

através de seu índice– Os índices de um array iniciam em 0

Page 23: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Tipos Complexos• Declaração de Arrays

int[] myArray;

• Declaração e Inicialização de Arraysint[] myArray = {1,2,3,4,5};

int[] myArray = new int[5];

int[] myArray = new int[3] {1,2,3};

Page 24: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Modificadores de acesso• O membros das classes podem ser definidos utilizando um dos

seguintes modificadores de acesso:

Palavra-chave Significado

public Membro acessível de qualquer código

privateMembro acessível apenas para o código da classe em que ele é definido

internalMembro acessível apenas para o código do projeto (assembly) em que ele é definido

protectedMembro acessível apenas para o código da classe em que ele é definido ou uma classe derivada

Page 25: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Operadores Aritméticos• Unários – atuam sobre apenas um operando

– Menos unário (-): multiplica o operando por -1• A expressão -x equivale a x = x * (-1)

– Decremento (--): decrementa o operando em uma unidade• A expressão x-- equivale a x = x – 1

– Incremento (++): incrementa o operando em uma unidade• A expressão x++ equivale a x = x + 1

Page 26: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Operadores Aritméticos• Binários – atuam sobre dois operandos

– Adição (+)– Subtração (-)– Multiplicação (*)– Divisão (/)– Modulus (%)

Exemplos:• x = 10 + 5; x igual a 15• x = 10 - 5; x igual a 5• x = 10 * 5; x igual a 50• x = 10 / 5; x igual a 2• x = 11 % 5; x igual a 1

Page 27: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Operadores Relacionais• São usados para comparar expressões e

resultam em falso ou verdadeiro– Igual a (==)– Maior que (>)– Menor que (<)– Maior ou igual a (>=)– Menor ou igual a (<=)– Diferente de (!=)

Exemplos:• 1 == 1 retorna verdadeiro• 2 > 1 retorna

verdadeiro• 2 < 1 retorna falso• 2 >= 1 retorna verdadeiro• 2 <= 2 retorna verdadeiro• 2 != 2 retorna falso

Page 28: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Operadores Lógicos• Binários

– Operador AND (&&)• Resulta em verdadeiro se ambas expressões forem verdadeiras

– Operador OR (||)• Resulta em verdadeiro se pelo menos uma expressão for

verdadeira

• Unários– Operador NOT (!)

• Resulta em verdadeiro se a expressão for falsa

Page 29: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

A instrução if

if(var1 < var2)

Console.WriteLine(“var1 < var2”);

else

if(var1 == var2)

Console.WriteLine(“var1 == var2”);

else

Console.WriteLine(“var1 > var2”);

Page 30: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

A instrução switchswitch(x){

case 1:Console.WriteLine(“x igual a 1”);break;

case 2:Console.WriteLine(“x igual a 2”);break;

default:Console.WriteLine(“x diferente de 1 e

2”);break;

}

Page 31: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Laço forint i;

for(i=0; i <= 10; i++)

{

Console.WriteLine(“{0}\n”, i);

}

Page 32: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Laço whileint i = 0;

while(i <= 10)

{

Console.WriteLine(“{0}\n”, i++);

}

Page 33: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Laço foreachstring Amigos[] = {“Pedro”, “Antonio”};

foreach(string Amigo in Amigos)

{

Console.WriteLine(Amigo);

}

Page 34: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Classes• Classes organizadas dentro de namespaces

namespace Demo{

class MyClass{

//membros da classe}

}

Page 35: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Modificadores de AcessoModificador Significado

none ou internal A classe é acessível apenas dentro do projeto atual

public A classe é acessível de qualquer lugar

abstractA classe é acessível apenas do projeto atual, não podendo ser instanciada, apenas derivada

public abstractA classe é acessível de qualquer lugar, não podendo ser instanciada, apenas derivada

sealedA classe é acessível apenas do projeto atual, não podendo ser derivada, apenas instanciada

public sealedA classe é acessível de qualquer lugar, não podendo ser derivada, apenas instanciada

Page 36: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Construtores• Mesmo nome da classe• Sem tipo de retorno• Podem ter ou não ter argumentos

class MyClass{

public MyClass() { ... }public MyClass(string Title) { ... }

}

Page 37: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Destrutores• Não é invocado assim que paramos de usar

o objeto

class MyClass{

~MyClass(){

//corpo do destrutor}

}

Page 38: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Criação de Objetos

public class MyClass{//membros da classe

}

MyClass obj;obj = new MyClass();

MyClass obj = new MyClass(“Título”);

Page 39: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Declaração de métodosDeclaração de métodos• Sempre devem estar dentro de uma classe.

• Sintaxe semelhante ao C/C++

• Suportam sobrecarga (overloading)

• Sintaxe:modificador tipo Nome_Método(parâmetros)modificador tipo Nome_Método(parâmetros){{

// Processamento do método// Processamento do método}}

Page 40: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Métodos - Exemplopublic class MyHelloWorld {

...public virtual void SayHello(){ ... }private void SetTitle(String Title){ ... }

}

Page 41: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Modificadores - Métodos• Principais modificadores utilizados para métodos em C#

são:Palavra-chave Significado

virtual Método pode ser sobrescrito

abstractMétodo deve ser sobrescrito (permitido apenas em classes abstratas)

overrideMétodo se sobrepõe a um método da classe-base (deve ser utilizado se um método estiver sendo sobrescrito)

externUtilizado para indicar que a implementação do método é externa. Normalmente utilizada quando métodos de DLL’s são importados

Maiores detalhes, procure no Help do VS.NET por methods [C#]

Page 42: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Parâmetros de Métodos• São valores que são passados para o método, para que o

mesmo faça algum processamento.

• Sintaxe:

public int Soma(int Num1, int Num2)public int Soma(int Num1, int Num2){{

return (Num1 + Num2);return (Num1 + Num2);}}

modificador tipo método(tipo parametro1, tipo modificador tipo método(tipo parametro1, tipo parametro2, ...tipo parametroN)parametro2, ...tipo parametroN)

• Exemplo de declaração de método

Page 43: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Chamada de MétodosChamada de Métodos• Exemplo:

......int num1 = 10;int num1 = 10;int num2 = 20;int num2 = 20;Operacoes s = new Operacoes();Operacoes s = new Operacoes();// Chamada do método soma// Chamada do método soma// Dentro da chamada de Console.WriteLine()// Dentro da chamada de Console.WriteLine()Console.WriteLine(s.Soma(num1,num2));Console.WriteLine(s.Soma(num1,num2));......

Page 44: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Tipos de Parâmetros• Por valor• Por referência

– ref: parâmetro de entrada e saída. Parâmetro deve ser inicializado antes de ser passado.

– out: parâmetro de saída. Similiar ao ref, porém não precisa ser inicializado.

public void func1(int x){ ... }public void func2(out int x){ ... }public void func3(ref int x){ ... }

Page 45: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Propriedades• Sintaxe alternativa para acesso aos membros de

dados da classe

public class Veiculo{

private string modelo;

public string Modelo{

get { return modelo; }set { modelo = value; }

}}

Page 46: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Herança• Existe apenas herança simples

public class MyClassBase{

public virtual void Func(){

//Implementação base}

}

public class MyClassDeriv : MyClassBase{

public override sealed void Func(){

//Sobrescreve a implementação base}

}

Page 47: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Herança – cont.• Métodos não são virtuais por padrão

public class MyClassBase {...public virtual void Func() { ... }

}

public class MyClassDeriv : MyClassBase {...public override void Func(){

base.Func();}

}

Page 48: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Exercícios C#1. Criar uma calculadora com as 4 operações

básicas;

2. Incrementar o exercício anterior incluindo raiz quadrada;

3. Separar a calculadora em 2 classes de modo que o código possa ser reutilizado em outros projetos.

Page 49: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Exercícios C#4. Criar uma aplicação que receba uma string do

usuário e exiba na tela a string invertida; 5. Criar uma classe chamada SwapClass, a qual

possui um método estático chamado Swap que recebe dois parâmetros inteiros, passados por referência e executa a troca dos valores. No clique de uma botão, invoque o método estático e exiba o resultado na tela.

Page 50: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Exercício C#6. Escreva um programa que defina a classe-

base, MyClass, com o método virtual GetString(). Este método deverá retornar a string armazenada no atributo protegido myString, acessível através da propriedade pública de somente escrita ConteinedString.

Page 51: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Exercício C#7. Criar uma classe derivada de MyClass,

MyDerivedClass, sobrescrever o método GetString(), utilizando a implementação base do método, porém com a adição do texto: "(saída da classe derivada)". Criar um construtor para a classe derivada que permita atribuir uma string inicial ao atributo myString.

– Criar uma classe para testar a implementação da classe derivada.

Page 52: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Conversão de tiposComando Resultado

Convert.ToBoolean(val) val é convertido para bool.

Convert.ToByte(val) val é convertido para byte.

Convert.ToChar(val) val é convertido para char.

Convert.ToDecimal(val) val é convertido para decimal.

Convert.ToDouble(val) val é convertido para double.

Convert.ToInt16(val) val é convertido para short.

Convert.ToInt32(val) val é convertido para int.

Convert.ToInt64(val) val é convertido para long.

Convert.ToSByte(val) val é convertido para sbyte.

Convert.ToSingle(val) val é convertido para float.

Convert.ToString(val) val é convertido para string.

Convert.ToUInt16(val) val é convertido para ushort.

Convert.ToUInt32(val) val é convertido para uint.

Convert.ToUInt64(val) val é convertido para ulong.

Page 53: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

BibliografiasBibliografias• MSDN Library

– http://msdn.microsoft.com/library• .NET framework center

– http://msdn.microsoft.com/netframework/• C#

– http://msdn.microsoft.com/vcsharp/• ASP.NET

– http://www.asp.net• Laboratório .NET do ISEP/IPP

– http://www.dei.isep.ipp.pt/labdotnet/

Page 54: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

BibliografiasBibliografias• ECMA

– http://www.ecma-international.org/• Introduction to C# @ ECMA

– http://www.ecma-international.org/activities/Languages/Introduction%20to%20Csharp.pdf

• Common Language Infrastructure @ ECMA– http://www.ecma-international.org/activities/

Languages/ECMA%20CLI%20Presentation.pdf

Page 55: Intodução a C# Tecnologias Web Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br