Framework.NET (2/2) Sumário. A Linguagem C# Introdução. A Linguagem C# Exemplos (1/2) Plataforma.NET Características Gerais. Framework.



Documentos relacionados
PADI 2015/16. Aula 1 Introdução à Plataforma.NET

Fundament n os s da platafo f rm r a. NE N T André Menegassi

Framework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C#

A interface do Microsoft Visual Studio 2005

Seminário - C# DSO II. Desenvolvimento de Sistemas Orientados a Objetos 2. Equipe: Diorges, Leonardo, Luís Fernando, Ronaldo

Professor: Douglas Sousa Cursos de Computação

Introdução ao C# . Visão geral do.net Framework

Programando em C# Orientado a Objetos. By: Maromo

Parte I Princípios básicos do Microsoft.NET Framework

Ambiente de Programação Visual. Framework.NET. Prof. Mauro Lopes. Ambiente de Programação Visual Prof. Mauro Lopes

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Java. Marcio de Carvalho Victorino

Trabalho Prático Nº1 Introdução ao C#.NET

NetBeans. Conhecendo um pouco da IDE

Desenvolvimento de Aplicações Locais na Plataforma Microsoft

Treinar - Cursos e Treinamentos C# Módulo I. Carga horária: 32 Horas

Ambiente de Programação Visual. Framework.NET. Prof. Mauro Lopes. Ambiente de Programação Visual Prof. Mauro Lopes

Web Services Novembro de 2011

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

2 Orientação a objetos na prática

Programação por Objectos. Java

Guia do Programador Joel Saade

GRUPO: Igor de Oliveira Nunes Mateus Tassinari Ferreira Renan Sarcinelli

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

Desenvolvimento ASP.net

Comparando Java e C#

CURSO DE PROGRAMAÇÃO EM JAVA

Tarefa Orientada 2 Criar uma base de dados

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Professor Leo Larback Esta apresentação pode ser baixada livremente no site

Linguagem de Programação Procedural (VB) Prof. MSc Eng Marcelo Bianchi AULA 01 - INTRODUÇÃO AO VB

Programação para Dispositivos Móveis Aula 1. Prof. William Yamamoto

Arquivos de Textos no C - Básico

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Programação de Computadores - I. Profª Beatriz Profº Israel

Ambientes Visuais. Ambientes Visuais

JavaScript 2.0X X

Introdução ao Desenvolvimento.NET Paulo Sousa

Programação Estruturada e Orientada a Objetos. Tratamento de Exceções

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

Alfamídia Programação: Desenvolvendo com C#

Módulo 06 Desenho de Classes

Principais características

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

3 Classes e instanciação de objectos (em Java)

Linguagens de. Aula 02. Profa Cristiane Koehler

Programação Orientada a Objetos em Java

DESENVOLVIMENTO DE SOFTWARE AULA 1

Guia e Utilização do Visual Studio 6.0

Técnicas de Programação II

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

Capítulo 4. Packages e interfaces

Capítulo 8. Software de Sistema

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Prof. Esp. Adriano Carvalho

Linguagem de Programação III

LINGUAGEM ORIENTADA A OBJETOS

Fundamentos de Programação II. Introdução à linguagem de programação C++

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Guião de Introdução ao Eclipse IDE Índice

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

FBV - Linguagem de Programação II. Um pouco sobre Java

Algoritmos e Programação Estruturada

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Como o FIT funciona. FIT: Framework for Integrated Tests FIT. Dados de testes. Programa. Fixtures. classes. Resultados de testes

Introdução a Java. Hélder Nunes

Programação por Objectos. Java

Introdução ao Microsoft Windows

Laboratório I Aula 2

Programação Orientada a Objetos

Introdução à orientação a objetos. João Tito Almeida Vianna 25/05/2013

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA*

Programação Orientada a Objetos

Criar uma aplicação JPA2 com EclipseLink e H2

Profº. Enrique Pimentel Leite de Oliveira

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

Criação de um Web Services em.net

Programação Orientada a Objetos em java. Polimorfismo

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Programação Orientada a Objetos (DPADF 0063)

Algoritmos e Programação

Programação por Objectos. Java

ASP.NET. Guia do Desenvolvedor. Felipe Cembranelli. Novatec Editora.

Introdução à Programação

INTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO

Programação de Computadores I. Conhecendo a IDE Code::Blocks

Linguagem de Programação Introdução a Linguagem Java

Introdução a POO. Introdução a Linguagem C++ e POO

Conceitos Básicos de C

FERRAMENTAS NECESSÁRIAS PARA O DESENVOLVIMENTO EM C#

A Linguagem Java. Apresentação. Java. A Linguagem da Internet

Orientação a Objetos com Java

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes

Transcrição:

Framework.NET (2/2) Introdução ao Visual Studio.NET Criação de Aplicações Móveis em C# Aula 1 ASP.NET Construído sobre as bibliotecas de classes da framework.net; Fornece um modelo de aplicações web através de um conjunto de controlos e de uma infra-estrutura que permite a criação fácil de aplicações web; Inclui controlos que encapsulam elementos HTML comuns (caixas de texto, caixas de selecção, etc); Permite definir serviços web apoiados na mesma infraestrutura (web services); Computação Móvel Pedro Sousa Pedro Sousa - INESC-ID / IST 5 Sumário Visual Studio.NET Plataforma.NET Características Gerais Framework.NET Introdução à linguagem C# C# vs. C++, C# vs. Java Compact Framework.NET A Linguagem C# Introdução Linguagem de eleição em.net Linguagem orientada a objectos: Muito semelhante a Java/C++; É fácil começar a programar em C#. Sistema unificado de tipos Tudo pode ser visto como um objecto Suporte directo à Programação Baseada em Componentes Propriedades, Eventos e Atributos Assemblies Pedro Sousa - INESC-ID / IST 2 Pedro Sousa - INESC-ID / IST 6 Plataforma.NET Características Gerais A Linguagem C# Exemplos (1/2) Desenvolvimento de aplicações web ASP.NET, web services, aplicações desktop e aplicações móveis. Permite programar em várias linguagens sobre mesma framework, utilizando o mesmo IDE. (Full) Framework.NET Aplicações WinForms / Web Forms / Web Services Compact Framework.NET Desenvolvimento de aplicações para PDAs, Smartphones, outros dispositivos baseados em Windows CE.NET using System; public class HelloWorld public static void Main(string[] args) Console.WriteLine("Hello World!"); Linguagem case-sensitive Instrução termina com ; Métodos estão dentro de classes Importação de outros namespaces com using Pedro Sousa - INESC-ID / IST 3 Pedro Sousa - INESC-ID / IST 7 Framework.NET (1/2) A Linguagem C# Exemplos (2/2) CLR Common Language Runtime Gestão da alocação de memória e garbage collection; Iniciar e terminar threads e processos; Gestão de políticas de segurança; Gestão de dependências de outros componentes Especificação aberta (portável para outros SOs). Bibliotecas de classes unificadas Fornece ao programador bibliotecas de classes orientadas a objectos, hierárquicas e extensíveis, utilizáveis em qualquer linguagem suportada pela framework; Permite ter herança, tratamento de erros e depuração entre linguagens diferentes. public class Pessoa private string Nome; private int Idade; public Pessoa(string nome, int idade) this.nome = nome; this.idade = idade; public void MostraInfo() Console.WriteLine("0, tem 1 anos", Nome, Idade); Pessoa Cliente = new Pessoa("Carlos", 25); Cliente.MostraInfo(); Pedro Sousa - INESC-ID / IST 4 Pedro Sousa - INESC-ID / IST 8

C# Tudo é um objecto (1/3) Boxing e unboxing: int val = ; object obj = val; int k = (int) obj; // k fica c/ valor C# Controlo de Execução (2/2) foreach Iterar sobre valores contidos em objectos que implementem a interface IEnumerable Enquanto decorre a iteração a lista e o elemento actual são apenas de leitura. val obj System.Int32 Boxing int[] tabela = 1, 2, 3; foreach (int i in tabela) Console.WriteLine("0", i); k Unboxing Pedro Sousa - INESC-ID / IST 9 Pedro Sousa - INESC-ID / IST 13 C# Tudo é um objecto (2/3) C# Sistema de Tipos Fim das classes de wrapping: String string Nome; C# Hashtable ht = new Hashtable(); ht.add(1, "Xpto"); ht.add(2, "Xpti"); Object Array Class Enum int[] tabela; class Pessoa... enum Estado Ligado, Desligado Java Hashtable ht = new Hashtable(); ht.put(new Integer(1), "Xpto"); ht.put(new Integer(2), "Xpti"); ValueType Struct bool byte char short sbyte ushort struct Ponto int x; int y; decimal float int uint decimal conta; double long ulong Pedro Sousa - INESC-ID / IST Pedro Sousa - INESC-ID / IST 14 C# Tudo é um objecto (3/3) Tudo deriva de System.Object Métodos: Equals GetType ToString Finalize MemberwiseClone GetHashCode C# Passagem de Parâmetros (1/2) ref passagem de value types por referência:... char c = 'c'; g(ref c); out passagem de value types não inicializados por referência:... int x; f(out x); Pedro Sousa - INESC-ID / IST 11 Pedro Sousa - INESC-ID / IST 15 C# Controlo de Execução (1/2) if, for, do, while, switch, foreach... switch sem fall-through (excepto se for explícito): switch(value) case 0: i += 3; goto case 1; case 1: i -= 27; goto case 2; case 2: i = j; break; Mas switch(value) case 0: case 1: case 2: i += j; break; está correcto. C# Passagem de Parâmetros (2/2) params passagem de n.º variável de parâmetros public static void Main() UseParams(1, 'a', "test"); int[] myarray = new int[3], 11, 12; UseParams(myarray); public static void UseParams(params object[] list) for (int i=0; i < list.length; i++) Console.WriteLine(list[i]); Console.WriteLine(); Pedro Sousa - INESC-ID / IST 12 Pedro Sousa - INESC-ID / IST 16

C# Herança (1/3) Os métodos não são virtuais por omissão public class Pessoa private string Nome; private int Idade; public Pessoa(string nome, int idade) this.nome = nome; this.idade = idade; public virtual void MostraInfo() Console.WriteLine("0, tem 1 anos", Nome, Idade); C# Redefinição de Operadores (1/2) Em C# é possível redefinir os operadores existentes Lista A = new Lista(); Lista B = new Lista(); A.Add(1); A.Add(2); B.Add(3); B.Add(4); Lista C = A + B; // Junta ambas as listas Pedro Sousa - INESC-ID / IST 17 Pedro Sousa - INESC-ID / IST 21 C# Herança (2/3) C# Redefinição de Operadores (2/2) public class Empregado : Pessoa private string Empresa; public Empregado(string nome, int idade, int empresa) : base(nome, idade) this.empresa = empresa; public override void MostraInfo() base.mostrainfo(); Console.WriteLine("Empresa: 0", Empresa); public class Lista private object[] Elementos; public static Lista operator+(lista a, Lista b) Lista resultado = new Lista(); // Copia os elementos de <a> e <b> para // a lista <resultado> return resultado; Pedro Sousa - INESC-ID / IST 18 Pedro Sousa - INESC-ID / IST 22 C# Herança (3/3) C# Unsafe Code public class Base void Xpto() Console.WriteLine("Base.Xpto()"); virtual void Xpti() Console.WriteLine("Base.Xpti()"); public class Derivada : Base new void Xpto() Console.WriteLine("Deriv.Xpto()"); override void Xpti() Console.WriteLine("Deriv.Xpti()"); O C# suporta elementos avançados, como a utilização de ponteiros Sempre que são utilizados estes elementos, o código tem de ser colocado dentro de um contexto unsafe int total = 0; unsafe int* ptr = &total; *ptr = ; Derivada d = new Derivada(); d.xpto(); // Resulta em "Deriv.Xpto()" d.xpti(); // Resulta em "Deriv.Xpti()" Base dref = d; dref.xpto(); // Resulta em "Base.Xpto()" dref.xpti(); // resulta em "Deriv.Xpti()" public unsafe void FastCopy(byte* dst, byte* src, int count) for (int i=0; i<count; i++) *dst++ = *src++; Pedro Sousa - INESC-ID / IST 19 Pedro Sousa - INESC-ID / IST 23 C# Interfaces C# vs. Java interface ILeitorCD void TocaCD(CD cd); public class Aparelhagem : ILeitorCD void TocaCD(CD cd) public class Computador : ILeitorCD void TocaCD(CD cd) CD GreatestHits = new CD(); Aparelhagem sony = new Aparelhagem(); Computador pc = new Computador(); ILeitorCD leitor; leitor = sony; leitor.tocacd(greatesthits); leitor = pc; leitor.tocacd(greatesthits); Só há um Main Várias classes num ficheiro namespaces em vez de packages goto Redefinição de operadores Enumerações Value types e Boxing Código inseguro (unsafe) ref serve para passar por referência Pedro Sousa - INESC-ID / IST 20 Pedro Sousa - INESC-ID / IST 24

Documentação em XML (1/2) Compact Framework.NET (2/2) /// <summary> /// Este método calcula o ordenado de uma pessoa, /// baseado nos seus dias de trabalho. /// </summary> /// /// <param name="diastrabalho"> /// O número de dias que trabalhou. /// </param> /// /// <returns>o salário da pessoa.</returns> public int CalculaOrdenado(int diastrabalho) Ligação com o SQL Server CE 2.0 através de ADO.NET Não disponível para smartphones Desenvolvimento suportado pelo mesmo IDE, com possibilidade de depuração e de execução de código no dispositivo real ou num simulador. A maior parte do desenvolvimento para dispositivos móveis é feito utilizando o simulador. O restante desenvolvimento, feito no dispositivo, é usado para verificar/confirmar o comportamento no dispositivo real ou para poder utilizar acessórios não disponíveis no simulador (e.g. câmaras fotográficas incorporadas). Pedro Sousa - INESC-ID / IST 25 Pedro Sousa - INESC-ID / IST 29 Documentação em XML (2/2) OpenNETCF.org SDF Smart Device Framework Conjunto de bibliotecas que complementam as existentes na.net Compact Framework Inclui APIs próprias de dispositivos móveis e alguns controlos extra que não estão incluídos na.net CF Estado da bateria, envio SMS, API de notificações, API para Bluetooth, API para receptores GPS, etc. Gerador do.net Ferramenta NDoc (open source) Pedro Sousa - INESC-ID / IST 26 Pedro Sousa - INESC-ID / IST 30 C# Acesso a APIs Nativas Na arquitectura.net podem invocar-se métodos em código nativo, através da declaração da assinatura dos métodos unmanaged. Exemplo: [DllImport("coredll.dll")] public static extern unsigned int GetTickCount(); Especialmente útil na Compact Framework, onde grande parte das APIs dos dispositivos não existem em código managed Procurar a funcionalidade pretendida noutras bibliotecas (e.g. SDF) antes de desenvolver! Outros Recursos (1/2) Newsgroups da Microsoft, acessíveis através do Google Groups ou do site da Microsoft: dotnet.framework.compactframework microsoft.public.dotnet.framework Sites: http://www.codeproject.com/netcf/ Artigos e projectos de exemplo http://www.opennetcf.org Fóruns de discussão e bibliotecas de classes open-source Pedro Sousa - INESC-ID / IST 27 Pedro Sousa - INESC-ID / IST 31 Compact Framework.NET (1/2) Permite desenvolver aplicações para dispositivos móveis PDAs (plataforma PocketPC), smartphones, dispositivos baseados em Windows CE.NET Versão reduzida da framework para desktop Apenas cerca de 25% das classes está disponível Não existe acesso através de código managed ao Pocket Outlook (contactos, agenda) nem às APIs específicas do dispositivo Sistema de notificações, estado da bateria, SMS Outros Recursos (2/2) Livro de introdução à linguagem C#: Microsoft Visual C#.NET Step by Step Version 2003 John Sharp Microsoft Press, 2003. ISBN 0735619093. Livros sobre a Compact Framework.NET:.NET Compact Framework Programming with C# Paul Yao Addison-Wesley, 2004. ISBN 0-3211-7403-8. The Definitive Guide to the.net Compact Framework Dan Fergus APress, 2003. ISBN 1-5905-9095-3. Microsoft.NET Compact Framework Core Reference Andy Wigley Microsoft Press, 2003. ISBN 0-7356-1725-2. Pedro Sousa - INESC-ID / IST 28 Pedro Sousa - INESC-ID / IST 32

Visual Studio IDE Elementos Gerais Ambiente de desenvolvimento com as ferramentas habituais de desenvolvimento (depuração, gestão de ficheiros de projecto, etc.). Soluções Elementos agregadores que contêm um ou mais projectos relacionados / dependentes entre si. Projectos Contêm os vários itens (referências, ligações de dados, pastas e ficheiros) relacionados com a aplicação ou biblioteca que está a ser desenvolvida. Pedro Sousa - INESC-ID / IST 33 Exercício 1 Abra o Visual Studio.NET Crie um novo projecto em C# do tipo Smart Device Application chamado Exercicio1 No ecrã seguinte escolha a plataforma Windows CE.NET, e o tipo de aplicação Windows Application Crie uma aplicação Hello World Use o método Show da classe MessageBox, para mostrar uma caixa de diálogo no evento OnLoad do form principal Pedro Sousa - INESC-ID / IST 34 Exercício 2 (1/2) Crie um novo projecto C# (SDA, WinCE.NET) do tipo Windows Application Adicione um novo ficheiro de classes (.cs) Defina a interface IListaNomes, que deverá incluir interfaces para: Adicionar um novo nome à lista de nomes Retornar a listagem de todos os nomes presentes na lista de nomes, sob a forma de uma cadeia de caracteres Limpar o conteúdo da lista de nomes (continua ) Pedro Sousa - INESC-ID / IST 35 Exercício 2 (2/2) Crie uma classe que implemente IListaNomes e crie uma instância dessa classe no seu Windows Form; Utilize a classe ArrayList para guardar os nomes Construa o Windows Form de forma a utilizar todas as funcionalidades fornecidas pela interface IListaNomes; Coloque breakpoints em cada método da classe e verifique que cada método da mesma é chamado e executado correctamente. NOTA Se o projecto for criado na mesma solução do exercício anterior, deve-se seleccionar o novo projecto com o botão direito do rato e seleccionar Set as Startup Project, para que o projecto a ser executado aquando do comando Start (F5) seja o novo projecto e não o do Exercício 1. Pedro Sousa - INESC-ID / IST 36