Intodução a C#
Tecnologias Web
Enrique Pimentel Leite de Oliveira
[email protected]
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#
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;
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;
.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
.NET Framework
• Arquitetura da .NET Framework
Introdução a plataforma .NET
VB
C++
C#
JScript
…
Common Language Specification
Windows Forms
Data and XML
Base Class Library
Common Language Runtime
Visual Studio.NET
ASP.NET
Utilizando Classes da Framework
System.Web
Services
Description
Discovery
Protocols
UI
HtmlControls
WebControls
Caching
Configuration
Security
SessionState
System.Windows.Forms
Design
System.Drawing
Drawing2D
Imaging
System.Data
ADO
Design
ComponentModel
Printing
Text
System.Xml
SQL
SQLTypes
XSLT
XPath
Serialization
System
Collections
Configuration
Diagnostics
Globalization
IO
Net
Reflection
Resources
Security
ServiceProcess
Text
Threading
Runtime
InteropServices
Remoting
Serialization
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);
Compilação na plataforma
• Processo de compilação e execução
Assembly
Compilação na plataforma
• Processo de compilação e execução
Assembly
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
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
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 “*/”
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;
Constantes
• Nativas
– null
– true
– false
• Definidas pelo programador
– const <tipo> <nome> = <valor>;
const string myString = “.NET”;
Tipos Simples
Tipo
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
uint
System.UInt32 0 a 4294967295
long
System.Int64
ulong
System.UInt64 0 a 18446744073709551615
-2147483648 a 2147483647
-9223372036854775808 a
9223372036854775807
Tipos Simples
Tipo
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
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;
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;
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
Tipos Complexos
• Declaração de Arrays
int[] myArray;
• Declaração e Inicialização de Arrays
int[] myArray = {1,2,3,4,5};
int[] myArray = new int[5];
int[] myArray = new int[3] {1,2,3};
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
private
Membro acessível apenas para o código da classe em que
ele é definido
internal
Membro acessível apenas para o código do projeto
(assembly) em que ele é definido
protected
Membro acessível apenas para o código da classe em que
ele é definido ou uma classe derivada
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
Operadores Aritméticos
• Binários – atuam sobre dois operandos
– Adição (+)
– Subtração (-)
– Multiplicação (*)
– Divisão (/)
– Modulus (%)
Exemplos:
• x = 10 + 5;
• x = 10 - 5;
• x = 10 * 5;
• x = 10 / 5;
• x = 11 % 5;
x igual a 15
x igual a 5
x igual a 50
x igual a 2
x igual a 1
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
• 2>1
• 2<1
• 2 >= 1
• 2 <= 2
• 2 != 2
retorna verdadeiro
retorna verdadeiro
retorna falso
retorna verdadeiro
retorna verdadeiro
retorna falso
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
A instrução if
if(var1 < var2)
Console.WriteLine(“var1 < var2”);
else
if(var1 == var2)
Console.WriteLine(“var1 == var2”);
else
Console.WriteLine(“var1 > var2”);
A instrução switch
switch(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;
}
Laço for
int i;
for(i=0; i <= 10; i++)
{
Console.WriteLine(“{0}\n”, i);
}
Laço while
int i = 0;
while(i <= 10)
{
Console.WriteLine(“{0}\n”, i++);
}
Laço foreach
string Amigos[] = {“Pedro”,
“Antonio”};
foreach(string Amigo in Amigos)
{
Console.WriteLine(Amigo);
}
Classes
• Classes organizadas dentro de namespaces
namespace Demo
{
class MyClass
{
//membros da classe
}
}
Modificadores de Acesso
Modificador Significado
none ou internal
A classe é acessível apenas dentro do projeto atual
public
A classe é acessível de qualquer lugar
abstract
A classe é acessível apenas do projeto atual, não podendo
ser instanciada, apenas derivada
public abstract
A classe é acessível de qualquer lugar, não podendo ser
instanciada, apenas derivada
sealed
A classe é acessível apenas do projeto atual, não podendo
ser derivada, apenas instanciada
public sealed
A classe é acessível de qualquer lugar, não podendo ser
derivada, apenas instanciada
Construtores
• Mesmo nome da classe
• Sem tipo de retorno
• Podem ter ou não ter argumentos
class MyClass
{
public MyClass() { ... }
public MyClass(string Title) { ... }
}
Destrutores
• Não é invocado assim que paramos de usar
o objeto
class MyClass
{
~MyClass()
{
//corpo do destrutor
}
}
Criação de Objetos
public class MyClass
{
//membros da classe
}
MyClass obj;
obj = new MyClass();
MyClass obj = new MyClass(“Título”);
Declaraçã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)
{
// Processamento do método
}
Métodos - Exemplo
public class MyHelloWorld {
...
public virtual void SayHello()
{ ... }
private void SetTitle(String Title)
{ ... }
}
Modificadores - Métodos
• Principais modificadores utilizados para métodos em C#
são:
Palavra-chave
Significado
virtual
Método pode ser sobrescrito
abstract
Método deve ser sobrescrito (permitido apenas em classes
abstratas)
override
Método se sobrepõe a um método da classe-base (deve ser
utilizado se um método estiver sendo sobrescrito)
extern
Utilizado 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#]
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:
modificador tipo método(tipo parametro1, tipo
parametro2, ...tipo parametroN)
• Exemplo de declaração de método
public int Soma(int Num1, int Num2)
{
return (Num1 + Num2);
}
Chamada de Métodos
• Exemplo:
...
int num1 = 10;
int num2 = 20;
Operacoes s = new Operacoes();
// Chamada do método soma
// Dentro da chamada de Console.WriteLine()
Console.WriteLine(s.Soma(num1,num2));
...
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)
{ ... }
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; }
}
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
}
}
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();
}
}
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.
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.
Exercício C#
6. Escreva um programa que defina a classebase, 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.
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.
Conversão de tipos
Comando
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.
Bibliografias
• 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/
Bibliografias
• ECMA
– http://www.ecma-international.org/
• Introduction to C# @ ECMA
– http://www.ecmainternational.org/activities/Languages/Introduction%2
0to%20Csharp.pdf
• Common Language Infrastructure @ ECMA
– http://www.ecmainternational.org/activities/Languages/ECMA%20CLI%
20Presentation.pdf
Download

public class - Objetivo Sorocaba