Ana Carolina's profileAna Carolina LimaPhotosBlogListsMore ![]() | Help |
|
March 05 Reunião
Para aqueles que não participaram da reunião de hoje (04/03/2008) vimos um pouco do Visual Studio 2005 e lançamos um projeto. A descrição do mesmo segue abaixo: DESCRIÇÃO DO PROJETO Implementação em C# de um sistema eletrônico de apuração (urna eletrônica) e contagem de votos. Funcionalidades do sistema: • Cadastramento nos Cartórios Eleitorais • Identificação do Eleitor nas Seções de Votação • Votação em Cabina Indevassável • Apuração dos votos de cada Seção • Totalização dos Votos de todas as Seções Os usuários do sistema de apuração, integração e contagem de votos (eleitores e funcionários dos tribunais eleitorais regionais) deverão ter acesso apenas as operações definidas pelo TSE, através de uma interface interativa segura, clara (de fácil entendimento) e eficiente. ASSUNTOS A SEREM ABORDADOS · Uso de estruturas básicas · POO · Enumeradores · Coleções · Windows Forms
*A ídéia para esse desafio foi baseada no projeto proposto por Clarissa na disciplina Programação II February 27 Célula acadêmica Soft.NET completa um ano
A célula acadêmica Soft.Net, criada e formada por estudantes do curso de Ciências da Computação da Católica, está completando um ano de diversas conquistas. O interesse dos alunos de Ciências da Computação participantes da Soft.NET levou alguns deles a escrever artigos para grupos de discussão da tecnologia .NET (como o SharpGame), além dos estudantes Ana Carolina Lima, Felipe Pimentel e Walby Felix terem obtido a certificação internacional da Microsoft. Participando da célula acadêmica Soft.NET, os alunos estabelecem uma relação diferenciada com a Microsoft, compartilham conhecimentos, mantêm-se atualizados para o mercado de trabalho e repassam o que aprendem para outros estudantes, através de palestras, seminários e eventos organizados pela Soft.NET. O grupo formado na Católica é liderado pela aluna Ana Carolina Lima e conta com o auxílio do ex-aluno de Ciências da Computação e estudante embaixador da Microsoft, Marcelo Diniz. As Células Acadêmicas são apoiadas pela Microsoft, que fornece gratuitamente o material de apoio aos estudos (arquivos para download, livros, CD’s, apostilas, um sistema de gerenciamento pela Internet) e promove encontros, palestras e competições. Mais informações pelo site www.softdotnet.com.br. Link da matéria: http://www.unicap.br/assecom2/boletim/2008/fevereiro/boletim_26.02.2008.html#2 É com grande prazer que gostaria de informar que temos agora um quarto participante que conseguiu obter a certificação, Luciano José, a notícia foi recebida depois da entrevista por isso não foi mencionado. Parabénss Luciano !!!!! February 24 Volta as aulas....
Olá, Nesta terça (26/02) a célula acadêmica Soft.NEt voltará com suas atividades, com novas metas Um célula acadêmica é focada em capacitar alunos de cursos de TI, Até Terça. Atenciosamente January 16 Projeto C#
Olá, segue abaixo a especificação do projeto do banco 24 horas. O que vale é tentar !! =) Boa sorte a todos. Data da entrega : 18/01/2008
Projeto C# Esta etapa do curso é constituída pelo desenvolvimento de um projeto, no qual o participante poderá apresentar todos os conceitos aprendidos durante o curso. Esta etapa tem como objetivo possibilitar uma avaliação individual de cada participante, nos quesitos: empenho, conteúdo assimilado, compreensão do projeto, etapas concluídas e qualidade do projeto entregue (boas práticas de programação). DESCRIÇÃO DO PROJETO Elaborar um sistema para a gestão operacional (atendimento eletrônico) de um Banco 24 horas. As funcionalidades do sistema (verificação de senha, consulta a saldo, déposito, saque, etc) serão estabelecidas pelo banco contratante (Banco do Brasil, Bradesco, Real, Safra, Unibanco, Itaú etc). Os clientes do Banco 24 horas deverão ter acesso a todas as operações financeiras, definidas pelo banco contratante, através de uma interface interativa clara (de fácil entendimento) e eficiente. DETALHES O objetivo deste projeto é o de desenvolver uma aplicação de controle de transações bancárias, sendo estas: · Saldo · Depósito · Transferência · Saque
Depósito: Deverá efetuar um depósito na conta em questão. Transferência: Deverá efetuar uma transferência entre contas, para isto deve ser verificado se o saldo é suficiente como também se é possível fazer a tranferência para a conta em questão. Saque: Deverá efetuar o saque da conta em questão, para isto deve ser verificado se o saldo é suficiente. ASSUNTOS A SEREM ABORDADOS Será conferido se o grupo compreendeu as aulas do programa de capacitação, deverá ser cobrado o uso de alguns conceitos: · Uso de estruturas básicas · POO · Enumeradores · Coleções · Windows Forms Avaliação Cada turma será avaliada durante o desenvolvimento do projeto. Pontos de avaliação: · Cronograma; · Utilização das tecnologias necessárias; January 12 Orientação a Objeto
Os conceitos de classe e objeto formam a base da para o desenvolvimento de sistemas orientados a objetos. Quando vemos esta figura o que vem em nossa mente ? Muitos de nós responderia que esta figura se refere a uma bicicleta, mas alguém poderia ver nesta figura uma motocicleta. A questão que podemos analisar é: porque a reposta dada geralmente é bicicleta ? Podemos dizer que esta resposta é mais comum porque as características básicas de uma bicicleta são vistas nessa figura, como rodas, guidon, etc. A partir dessas descrições são geradas verdadeiras bicicletas que poderemos utilizar, que terão determinada cor e tamanho para essas características que enumeramos. Em orientação a objetos, todas as coisas que podemos definir são objetos. Uma bicicleta, um monitor de TV, uma pessoa. Todos esses objetos pertencem a classes, cada uma delas com características que irão definir os elementos que podem pertencer a elas. Ou seja, os objetos que pertencem à classe bicicleta irão conter todos as mesmas características. O mesmo ocorre para os objetos pertencentes à classe monitor de TV, pessoa e carro, entre outras. Mesmo os objetos pertencentes a mesma classe irão possuir características próprias que o identificam dentre os demais objetos. Por exemplo, duas pessoas, mesmo gêmeas idênticas, são ainda pessoas diferentes. Uma característica que poderia distingui-las seria seu código genético. Uma TV poderia ter seu número de série, etc, ou seja, todos os objetos possuem sua identidade, distinguindo-os dos demais objetos que pertencem a sua classe. Rumbaugh descreve uma classe como "um grupo de objetos com propriedades semelhantes, o mesmo comportamento, os mesmos relacionamentos com outros objetos e a mesma semântica". Ou seja, uma classe nada mais é do que uma abstração, ela não existe propriamente, sendo apenas uma definição. Os objetos, por sua vez, são a instanciação de uma classe. Eles existem e podem ser manipulados. As características, ou propriedades, de um objeto são chamadas de Atributos. Os atributos guardam valores úteis para a definição e representação de um objeto. Por exemplo, caso definamos as propriedades Altura, Nome, Peso, Idade e Cor para a classe Pessoa, poderíamos atribuir a um objeto dessa classe os valores 1.70, "José", 50, 75 e "Branca", respectivamente. O exemplo acima mostra algumas características dos atributos de uma classe. Além dos atributos, vimos que as classes podem definir comportamento para os seus objetos. O comportamento de uma classe é definido através de seus métodos. Em linguagens puramente orientadas a objetos a forma que os objetos possuem para modificar os valores de seus atributos é através das chamadas aos seus métodos. Por exemplo, podemos definir um método FazAniversario para a classe Pessoa. A função do método FazAniversario é a de aumentar o valor do atributo Idade dos objetos dessa classe. Para aumentarmos o valor do atributo idade, não deveríamos fazer acesso direto ao seu atributo, mas sim, chamar o método FazAniversario. Um aspecto importante que devemos observar em relação a definição dos métodos é que ela é feita para a classe, sem levar em consideração objetos isoladamente. Ou seja, quando definimos o método FazAniversario pertencente à classe Pessoa, não estaremos levando em consideração um objeto e sim a classe de objetos que ele manipula. Herança Imaginemos agora que quiséssemos criar uma nova classe chamada Trabalhador. Poderíamos pensar nessa classe como possuindo os mesmos atributos da classe Pessoa, uma vez que todo trabalhador é uma pessoa. Porém um trabalhador possui atributos e métodos que pessoas de uma forma geral não possuem como, por exemplo, o salário, o cargo que ocupam, e a possibilidade de um aumento salarial. Seria uma perda de tempo termos de rescrever todo o código que já foi escrito anteriormente para a classe Pessoa. O ideal seria que pudéssemos aproveitar todo o código previamente escrito e simplesmente de tivéssemos de escrever o código restante ou aquele que porventura tivesse sido alterado, ou seja, deveríamos apenas nos preocupar com o que realmente caracteriza a nova classe que estamos definindo. A boa notícia é que podemos fazer isso, graças a um conceito de orientação a objetos chamado de Herança. O conceito de herança dentro da orientação a objetos é bastante semelhante ao conceito que temos em nossa vida cotidiana. Por exemplo, da mesma forma que os filhos herdam características dos seus pais, que por sua vez herdaram características de seus próprios pais através de uma "hierarquia genética", assim são os objetos. Os objetos podem herdar características e comportamento, ou seja atributos e métodos, de outros objetos atendendo, também, a uma "hierarquia genética". A definição dessa hierarquia não é feita através dos objetos, mas sim através das classes as quais eles pertencem. Em nosso exemplo, para definirmos a classe Trabalhador e aproveitarmos todos os atributos e métodos previamente definidos para a classe Pessoa, devemos em sua definição informar que a nova classe, a classe Trabalhador, é uma subclasse, também chamada classe filha, de uma outra classe. A classe Pessoa será, portanto, a classe pai, também chamada de super-classe, da classe Trabalhador. EncapsulamentoUm outro conceito importante dentro da orientação a objetos é o de Encapsulamento. Para garantir um melhor funcionamento dos programas, principalmente devido a herança de código entre as classes, seria aconselhável que os detalhes da implementação de cada um dos métodos escritos ficassem isolados dos desenvolvedores. Para que um desenvolvedor venha a utilizar ou herdar uma classe criada por outro desenvolvedor, bastaria que ele soubesse os atributos e métodos que compõe a classe-pai e não a implementação de cada um deles. O encapsulamento nada mais é do que esse conceito. Quando criamos a classe Trabalhador já havia sido declarado e codificado o método FazAniversario. Nós tínhamos conhecimento apenas de sua existência e que deveríamos utilizá-lo quando desejássemos aumentar de 1 a idade de um objeto da classe Pessoa e, por conseqüência, da classe Trabalhador. Não saberíamos, ou melhor, não seria necessário que soubéssemos como esse método foi implementado para que pudéssemos utilizá-lo. É bem verdade que, como desenvolvedores de sistemas, ficamos acima de tudo curiosos para verificar como o código escrito para um determinado método funciona antes de utilizá-lo, porém isso não é necessário. Dessa forma, o código que utilizamos fica protegido contra qualquer alteração indevida. Basta que saibamos o que cada método executa sem termos de nos preocupar com a possível complexidade existente nesse código. PolimorfismoPolimorfismo significa que uma chamada de método pode ser executada de várias formas (ou polimorficamente). Quem decide "a forma" é o objeto que recebe a chamada. Essa última frase é muito importante, pois ela encerra a essência do polimorfismo. Ela significa o seguinte: Se um objeto "a" chama um método xpto() de um objeto "b", então o objeto "b" decide a forma de implementação do método. Mais especificamente ainda, é o tipo do objeto "b" que importa. Para concretizar melhor, digamos que xpto() seja grita(). Então a chamada b.grita() vai ser um grito humano se "b" for um humano e será um grito de macaco, se o objeto "b" for um macaco. O que importa portanto, é o tipo do objeto receptor "b". January 10 Array e Coleções
Array Arrays são usados para gerenciar grande quantidade de informações. Para utilizar arrays você deve declará-los antes de utilizar. Os arrays respeitam as mesmas regras de escopo que as variáveis, ou seja, se são declaradas dentro do procedimento, ficam disponíveis apenas para o procedimento em que foram declaradas. Declarando um array int[] MeuArrayDeInteiros; Instanciando um array int[] nome_da_variável = new int [tamanho do array]; Ex.: int[] numeros = new int[3]; //Array de 3 posições 0,1,2 Inicializando um array int[] numero = {30,45,10,36};
Collections
ArrayList
ArrayList alist= new ArrayList();
Existem ainda outros métodos que podem ser úteis:
Tipos
Todas as linguagens da plataforma .NET possuem os mesmos tipos primitivos, podendo ter nomes diferentes, mas a mesma estrutura. O CTS (Common TypeSystem) define quais tipos a plataforma .NET possui, como eles são declarados, usados e gerenciados em tempo de execução. CTS (Common Type System)
É a definição de tipos de dados onde tudo é um objeto e deriva da classe System.Object, que é o núcleo do sistema de tipos. Pensando que tudo é um objeto, logo tudo deriva da classe System.Object e, por isso, os projetistas da .NET organizaram o sistema de tipos de dados de duas formas: · Tipos Valor: variáveis deste tipo são alocadas na pilha e têm como classe base System.ValueType, que por sua vez deriva da System.Object. · Tipos Referência: variáveis deste tipo são alocadas na memória heap e têm a classe System.Object como classe base. Tipos por Valor
São variáveis que contém seus dados diretamente instanciados em vez de conter uma referência aos dados. Os tipos por valor são armazenados em uma área da memória chamada pilha em vez do Heap, ou seja, estão acessíveis mais rapidamente pelo código em execução. São os tipos mais simples que existem no .NET Framework e incluem todos os tipos de dados numéricos, booleanos, Char e Date, estruturas e enumeration. Tipos gerais :
Cada um desses tipos derivam do System.Value Built-in
Quando você atribui tipos por valor entre variáveis, os dados são copiados de uma variável para outra e armazenados em dois locais diferentes na pilha. Mesmo que tipos por valor representem freqüentemente valores simples, funcionam ainda como objeto, ou seja, você pode chamar métodos neles. Um fato comum é chamar o método ToString ao indicar valores como texto. ToString deriva do tipo fundamental System.Object. Como declarar tipos por valor Tipos por valor possuem construtores implícitos, você não precisa incluir a palavra chave new, o construtor tem valor default igual a null ou 0. //C# bool b = false; int x = 0; O Nullable é um novo tipo no .NET 2.0, chamado de Tipo por valor nulo, ele permite criar variáveis de Tipos de Valor que aceitam valores nulos. Exemplo, se você estiver armazenando dados de um formulário de perguntas sim/não e o usuário ao responde a pergunta, você deve armazenar um valor nulo. O seguinte código permite que uma variável booleana seja verdadeira, falsa ou outra: //C# Nullable <int> x = null; Ou ainda: int? x = null; Desta forma evitamos o (mais que) comum erro “Cannot convert null to 'int' because it is a value type”. Ao declararmos uma variável como Nullable torna disponíveis os membros HasValue e Value, que tornam possível determinar se esta variável tem um valor nulo e, no caso de não ter, ler o seu valor. if (x.HasValue) // Boa, o valor de x não é nulo! Console.WriteLine(“O valor de x é {0}”), x.Value); else // Ooops, o valor de x é nulo! Console.WriteLine(“x é nulo!”); Como criar um User-Defined User-defined são chamados de structures ou simplesmente struct. Comportam-se semelhantes as classes, mas ao invés de gerar tipos por referência como as classes, geram tipos por valor. Podem ter os mesmos membros que as classes, só não podem ter herança. São criadas como as classes, porém precisam da palavra chave em C# struct, em VB structures. //C# //Exemplo1 struct Pessoa public int Idade; //Exemplo2 struct SerHumano { public float altura; public float peso; public short idade; public SerHumano (float _altura, float _peso, short _idade) { altura = _altura; peso = _peso; idade = _idade; } public override string ToString() { return “Este Ser Humano mede “ + altura + " m, pesa " + peso + " kg e tem " + idade + “ anos.”; } } Como criar Enumeration
Enumerations são símbolos relacionados que tem valor fixo. Use enumerations para prover uma lista de escolhas para usar no desenvolvimento de suas classes.São criadas com a palavra chave enum, seguido de um nome e ,entre chaves, no bloco de código da enumeração, os valores pré-definidos para ela separados por vírgula. Por exemplo: C# //Declaração do enum enum Dias { Segunda, Terça, Quarta, Quinta, Sexta, Sábado, Domingo }; A utilização do enum segue a regra NomeEnum.Valor, por exemplo, Dias.Segunda, Dias.Domingo.
Tipos por referencia
Os Tipos por Referência armazenam o endereço da sua informação na stack e também são conhecidos como apontadores (pointers). E o que quer isto dizer? Quer dizer que os dados propriamente ditos estão armazenados na heap, mas existe uma referência à sua localização na stack (um apontador), uma área da memória que está acessível mais rapidamente pelo código em excução.. O ambiente de execução gerência a memória armazenada na heap utilizando um processo denominado Garbage Collection (“Coletor de Lixo”), que consiste em ir liberando a memória periodicamente, com a eliminação de objetos à medida que estes deixam de ser referenciados. Existem aproximadamente 2500 tipos de referência feitos para .NET Framework. Os Tipos por Referência abaixo são os mais comuns, sendo que muitos outros Tipos por Referência derivam destes: · System.Object. Este é o tipo mais genérico existente na .NET Framework. Qualquer tipo pode ser convertido para este Tipo. · System.String. Este é um dos tipos mais utilizados na .NET Framework e serve para armazenar dados de texto. · System.Text.StringBuilder. Armazena dados de texto de uma forma dinâmica. · System.Array. É utilizado para arrays de dados sendo a classe base para todos os arrays. · System.IO.Stream. Trata-se de um buffer para operações de Input/Output de ficheiros, dispositivos e rede. Trata-se de uma classe base abstracta. · System.Exception. É utilizada para tratar excepções. Esta classe gere sobretudo excepções de Sistema, sendo que excepções específicas de tarefas em execução herdam deste tipo. Strings Tipos são mais que apenas container para dados, eles fornecem meios para manipular dados através seus membros. O System.String fornecem membros para trabalhar com textos. Como criar e organizar Arrays Arrays são declarados utilizando parênteses (VB) ou colchetes (C#). String.Array fornece membros para trabalhar com dados. Por exemplo //C# //Declarando e inicializando array int[] vet= {3,1,2} ; //Ordenando o array Array.sort(vet); Como usar Streams Streams são outro tipo muito comuns porque eles são meios para ler e escrever no disco e comunicação através da rede. Por intermédio das streams é possível transportar dados como voz, vídeo, imagem, entre outros. As streams suportam leituras e escritas síncronas e assíncronas.O tipo System.IO.Stream é tipo base para todo stream. As classes mas simples do stream são StreamReader e StreamWriter que permitem ler e escrever textos em arquivos. Você pode passar um nome de um arquivo como parte de um construtor permitindo que você abra um arquivo com uma simples linha de código. Depois que você processar o arquivo chame o método Close para fechá-lo. Existem vários tipos de streams: · FileStream, para ler e escrever a partir de arquivo. · MemoryStream, para ler e escrever a partir da memória. · StreamReader, para ler dados de uma stream. · StreamWriter, para escrever dados para uma stream. //C# //Criando e escrevendo para um arquivo de texto StreamWriter sw= new StreamWriter(“text.txt”); sw.WriteLine(“Hello, Wolrd !!”); sw.Close(); //Ler e mostrar um arquivo texto StreamReader sr = StreamReader(“text.txt”); Console.WriteLine(sr.ReadToEnd()); Sr.Close(); Conversões entre tipos é uma das tarefas mais comuns em programação orientada a objetos. Várias vezes é necessário converter uma variável de um tipo para outro antes de a passar como parâmetro de um método ou para executar determinado cálculo. Existem dois tipos de conversões: implícitas e explícitas. Em C# só é possível efetuar conversões implícitas entre tipos se não existir perda de precisão. Isto significa que é possível efetuar conversão implícita em C# se, e somente se o tipo de destino puder aceitar todos os valores possíveis para o tipo de origem. Isto é denominado de conversão generalista (widening conversion): int i = 1; double d = 1.0001; d = i; // Conversão implícita permitida Se o campo de conversão ou precisão do tipo de origem excede o do tipo de destino, a operação denomina-se de conversão de estreitamento (narrowing conversion) e normalmente necessita que a conversão seja explícita. Existem várias formas de realizar uma conversão explícita: · System.Convert: Converte entre tipos que implementem o Interface System.IConvertible; · (tipo)cast: Converte entre tipos que definem operadores de conversão; · tipo.ToString e tipo.Parse: Converte entre objectos do tipo string e objetos de tipos base. Se a conversão não for possível, a operação resulta numa exceção; · tipo.TryParse e tipo.TryParseExact: Converte entre um objeto do tipo string e um objeto de um tipo base. Se a conversão não for possível, devolve um valor false; Os métodos TryParse, TryParseExact e TryCast são novos na .NET Framework 2.0. Conversões explícitas falham se o valor de origem exceder o campo de valores aceitos pelo tipo de destino ou se a conversão entre os tipos não estiver definida, por isso este tipo de conversões deve ser incluído entre blocos Try ou utilizando os métodos TryCast ou TryParse para ser possível verificar o valor de retorno.
Boxing e Unboxing Numa linguagem totalmente orientada a objeto, tudo seria objeto inclusive tipos simples que não precisam de tanto overhaed nade memória. Caso precisássemos somar dois números em uma linguagem totalmente orientada a objeto, precisaríamos criar um objeto que representasse o primeiro número , outro que representasse o segundo número e outro que representasse o resultado da soma. Seria gasto assim muito processamento para uma operação simples. Em C# o uso de boxing e unboxing buscam resolver esse problema, deste modo ocorre transformações automáticas de tipos durante o processo. Boxing converte de tipo por valor para tipo por referência automaticamente, já o unboxing é o processo de volta. Boxing Neste processo ocorre que um novo objeto é alocado na memória e o valor da variável é copiado para ele, ou seja, pegamos o tipo por valor e colocamos dentro de um novo objeto. A partir desse momento podemos usar o nosso tipo por valor como um tipo por referência. Unboxing O unboxing trás de volta o tipo por valor, funcionando como se tivéssemos retirado o envoltório da nossa variável e a deixássemos apenas com o seu valor. As operações de Boxing e Unboxing implicam um acréscimo de processamento,por isso devem ser evitados quando se programam tarefas que se repetem de uma forma intensa. Boxing também ocorre quando são chamados métodos virtuais de uma estrutura que herde de System.Object como, por exemplo, o método ToString(). Tabela de Conversão de tipos
January 09 Introdução –Linguagem C#
Características
Tipos de dados Operadores Sintaxe
Declaração de Classes
classPorta{ ... }
Declaração de Objetos
Portaporta = newPorta(); Exceptions
Try { ... } Catch ( tipo de erro que trata) { ... } Catch ( tipo de erro que trata) { ... } Catch ( Exception ex) //Pega qualquer erro { ... }
Herança
Interface
· IComparable :Interface para tipos que possam ser ordenados · IDisposable:Interface para tipos que possa se dispor manualmente · IConvertible:Interface para tipos que possam ser convertidos · ICloneable:Interface que suporta a copia de um objeto · IEquatable:Interface que permite comparar instancia de um objeto por igualdade (if(a==b)) · IFormattable:Interface que habilita converter o valor de um objeto para uma string formatada. Mais flexivel que o método ToString() Partial Class
Generics Class
class Generic<T, U> { private T t; private U u; public Generic(T t, U u) { this.t = t; this.u = u; } } Generic<int,float> gen = new Generic<int,float>(3, 4.5f); Conversão
doublenum1 = 10.2; intnum2 = (int)num1;
doublenum1 = 10.2; intnum2 = Convert.ToInt32(num1);
stringnum1 = “32”; intnum2 = int.Parse(num1); January 08 Fundamentos .NET
O que é . NET? É uma plataforma, não uma linguagem, que visa o desenvolvimento e execução de sistemas e aplicações. Todo e qualquer código gerado em .NET, pode ser executado em qualquer dispositivo ou plataforma que possua o .NET Framework. Vantagens do .NET · Conjunto rico de bibliotecas com os mais variados usos; · Controle de versão: fim do “DLL Hell”; · Facilidade de desenvolvimento de aplicações ; · Facilidade na instalação e na distribuição de aplicações; · Orientada a objeto; · Alta escalabilidade para ambientes de missão crítica; · Interoperabilidade entre plataformas e componentes desenvolvidos em outras linguagens .NET; · Tecnologia baseada em máquina virtual; · Rotina automática de “coleta de lixo” que permite remoção de variáveis e objetos que não são mais utilizados; · Novo ambiente de desenvolvimento acelerado (RAD); Desvantagens do .NET
A plataforma .NET é executada sobre uma CLR (Common Language Runtime) que interage com uma coleção de bibliotecas unificadas, que juntas formam o próprio framework. Esta CLR é capaz de executar, diferentes linguagens de programação, interagindo entre si como se fossem uma única linguagem.
Múltiplas linguagens de programação
Coleta de lixo
Orientado a objetos
Fim da “DLL Hell”
Plataforma .NET – Funcionamento e Arquitetura Para permitir uma maior integração entre as linguagens que suportam a plataforma .NET, foi criado o CLS (Common Language Specification). O CLS é uma especificação comum que contém as funcionalidades básicas necessárias para as linguagens, ou seja, a CLS define funcionalidades que todas as linguagens possuem. Uma linguagem para ser considerada dentro da plataforma deve aderir as especificações da CLS e CTS. Assim ela poderá ser “nomeada” como X.NET. Funcionamento - Processo de compilação Na plataforma .NET o código é duplamente compilado: Primeira compilação Ao compilarmos nosso código para gerar uma DDL, ou um arquivo EXE, o compilador da linguagem em que trabalhamos é chamado e este transforma nosso código em uma linguagem chamada MSIL (Microsoft Intermediate Language), esta linguagem é semelhante ao Assembly x86. Qualquer código compilado em .NET é chamado de assembly. Segunda compilação A segunda compilação é feita no momento em que o aplicativo é executado pela primeira vez ou quando sua DLL é referenciada pela primeira vez. O .NET Framework, através do CLR(Common Language Runtime) chama o compilador Just-in-Time (JIT compiler) que compila o código MSIL em código nativo do computador. O JIT compila o código sob demanda e joga o código resultante em cache, de forma que esse código não precise ser recompilado quando houver uma nova invocação do mesmo método. Percebemos então que não importa se o MSIL veio de C#, VB.NET ou de COBOl já que é a mesma linguagem(MSIL). Uma observação importante é que C++ nos permite compilar diretamente para a arquitetura que queremos e pular todos os de MSIL e JIT O JIT compila para o processador, vista disso podemos dizer que há um ganho de performance, visto que ele gera o cógido para a arquitetura especifica, assim não teremos problemas com diferentes versões de processadores. Arquitetura Common Language Runtime (CLR) É o ambiente de execução das aplicações .NET, a base de toda arquitetura da plataforma. Funciona como uma aplicação em plano de fundo que gerencia, aloca e desaloca memória, carrega os APIs necessários e executa o código. O CLR cuidará do gerenciamento de memória através do Garbage Collector. Abriga o JIT Compiler um componente que interpreta a IL e gera a linguagem de máquina na arquitetura do processador. Sem o CLR não há execução do código .NET por isso é necessário a instalação do .NET Framework. .NET Class Library Conjunto de funcionalidades prontas para facilitar o desenvolvimento e evitar reescrita de código. Na Class Library temos as APIs (Application Programming Interface ou Interface de Programação de Aplicativos ) para acesso a Banco de Dados (ADO.NET), programação para Web (ASP.NET), segurança, comunicação, etc. Para permitir uma melhor organização do código a Class Library é toda organizada em namespace. Segue no Anexo1 Principais Namespaces do .NET Class Library Class Library Support Faz a integraçãocom a .NET Class Library Thread Support Fornece classes e interfaces para a ultilização de thread COM Marshaler Permite que objetos COM sejam usados em .NET e vice-versa Type Checked Não permite casts inseguros. Fortemente tipado Exception Manager Security Engine Debug Engine Permite debug e tracing IL to Native Compilers Converte MSIL para código nativo (compilação JIT) Code Manage Gerencia a execução do código Garbage Collector Gerencia o tempo de vida dos objetos, apagando da memória objetos que não são mais importantes Class Loader: Carrega os componetes que serão usados na memória e gerencia meta-dados Namespace : Organização lógica do código do sistema, permite que o código seja dividido em partes para melhor compreensão da aplicação. Vale salientar que a organização é lógica e não física, podemos ter um sistema todo em um único assembly, mas com vários namespaces no mesmo arquivo ou até mesmo um único nmamespace dividido entre vários assemblies. Com o uso do namespace podemos, por exemplo, colocar todo o código rede referente a interface gráfica em um um namespace chamado “GUI”, outro namespace pode conter todo o código refrente ao acesso ao bando de dados, chamando-o de “Dados”.Toda .NET Class Library está organizada em namespaces hierárquicos. O namespace principal é o System, que contem tipos primitivos da linguagem, funcionalidades que nos permite ler e escrever na tela, converter tipos, etc. CTS (Common Type System)
É a definição de tipos de dados onde tudo é um objeto e deriva da classe System.Object, que é o núcleo do sistema de tipos. Pensando que tudo é um objeto, logo tudo deriva da classe System.Object e, por isso, os projetistas da .NET organizaram o sistema de tipos de dados de duas formas:
-- System.Object CLS (Common Language Specification) Define um conjunto de regras que as linguagens que implementam a .NET devem seguir para que a CLR possa gerar a IL. Esse é um dos motivos de podermos criar sistemas em diferentes linguagens e interagir entre elas dentro da .NET. No momento da compilação é gerado um código único intermediário (IL) e todas essas linguagens suportadas pela .NET seguem as regras da CLS, para que depois de gerado a IL, ela seja interpretada corretamente pela CLR, como já dito acima. VES (Virtual Execution System ) É um processo de compilação e é aqui onde o JIT é ativado quando uma aplicação .NET é chamada. O Windows identifica que esta é uma aplicação .NET e uma runtime Win32 passa o controle para a runtime do .NET. Neste momento a compilação do Portable Executable é efetuada e só então o código assembly próprio da arquitetura do processador é gerado para que a aplicação possa ser executada.
Portable Executable
Principais Namespaces do .NET Class Library Namespace Descrição System Este namespace é a raiz dos tipos de baixo-nível requerido pelo .Net Framework. Contém classes fundamentais e básicas que definem valores e referências de tipos de dados usados rotineiramente, além de processamento de exceções, interfaces e eventos. System.CodeDom Namespace que contém classes que podem ser utilizadas pra representar os elementos e estruturas de um documento de código-fonte. System.Collections Possui interfaces e classes que definem várias coleções de objetos, como listas, filas, array de bits e também dicionários. System.ComponentModel Este namespace possui classes que são usadas para implementar o comportamento do ambiente de tempo de execução e tempo de design de componentes e controles. System.Configuration Fornece classes e interfaces que permitem o acesso programático às configurações do .Net Framework e manipular erros nos arquivos de configuração. System.Data Namespace que contém classes necessárias para acessar e manipular banco de dados. System.EnterpriseServices Namespace que fornece uma infra-estrutura importante para aplicações da empresa. O COM+ fornece uma arquitetura dos serviços para os modelos de programação do componente distribuído em um ambiente de empresa. O principal objetivo do namespace é fornecer objetos .Net e o acesso aos serviços do COM+, tornando os objetos .Net mais práticos para aplicações da empresa. System.Globalization Namespace com classes que definem informação relacionada à cultura, incluindo a linguagem, o país, a região, os calendários em uso, os padrões de formatos de datas, moeda corrente, números e ordens para ordenção de strings. System.IO Neste namespace temos classes responsáveis para a leitura e gravação de arquivos. System.Messaging Fornece para o programador classes que aceitam que você se conecte, monitore e administre as filas de mensagem na rede, além de enviar, receber e resgatar mensagens. System.Net Namespace que fornece uma simples interface de programação para diversos protocolos utilizados em rede atualmente, assim você pode desenvolver aplicações que usem recursos de internet sem se preocupar sobre os detalhes específicos de protocolos individuais. System.Reflection Contém classes e interfaces que fornecem uma visão gerenciada dos tipos, métodos e campos com a habilidade para dinamicamente criar e invocar tipos. System.Resorces Importante namespace que fornece classes que permitem ao programador ou desenvolvedor criar, gravar e gerenciar recursos utilizados na aplicação. System.Security Fornece a estrutura subjacente do sistema de segurança do CLR, incluindo classes bases para permições. System.Threading Contém classes que permitem a implementação de multithreading dentro de suas aplicações. System.Timers Fornece um componente Timer que permite a você disparar um determinado evento em um intervalo de tempo especifico. System.Web Fornece classes e interfaces que permitem a comunicação cliente, que se dá através do browser, e servidor, que se da através do servidor IIS. O namespace ainda fornece diversas outras classes com diversas características. System.Windows.Forms Namespace que contém classes capazes de criar aplicações baseadas em Windows que podem utilizar a vantagem da disponibilidade de funcionalidades para aplicações com clientes. System.XML Fornece suporte para a utilização de arquivos ou objetos XML. System.Drawing Namespace que fornece funcionalidades da GDI+ e fornece classes que facilitam a renderização de gráficos. Novos Posts
Pessoal, a partir de hoje estarei postando os assuntos vistos no Curso de C# básico da Poli. Atencisamente, Ana Carolina Lima December 24 Curso de C# na Poli Faz tempo que não posto algo, mas assim que tudo ficar mais calmo postarei com maior frequência. Inspirada no post de Waldyr que li hoje pela manhã queria falar sobre o Curso de C# que ministraremos na POLI. Copiando e colando do post dele: O curso terá 30h de duração e serão abordados assuntos como funcionamento do Framework .NET, Orientação a Objetos com C# e Windows Forms. A grade do curso que será ministrado em duas semanas (de 7 à 18 de janeiro) pode ser encontrada em detalhes no site da POLI Junior: http://www.polijunior.poli.br/ Assim como ele disse estamos trabalhando fortemente para fazer um excelente curso, os alunos elaborarão um projeto no final do curso e com o patrocinio da Soft.NET teremos premiações para os melhores projeto. Recomendo a todos.
November 26 Célula AcadêmicaAviso a todos os participantes da célula acadêmica Soft.NET Prezados, Informo que a célula entrará em recesso devido as provas que serão realizadas a partir desta semana. Em 2007 inauguramos a célula, muitos de nossos membros participaram com um excelente desempenho do Proform repetindo-se agora no Student To Buniess. Dois membros conseguiram tirar certificação da Microsoft. Criamos grupos de estudos de XNA, Mobile e ASP.NET. Conseguimos apoio da Universidade que efetuou a instalação do Visual Studio nos laboratórios. Tivemos uma série de eventos com palestras técnicas, contamos com a presença de palestrantes como André Furtando, Diogo Burgos, Marcelo Diniz, Fabiano Arruda, Edgar Figueredo, entre outros. Estamos formando equipes e estudando a idéia de participar da Imagine Cup como também damos suporte a quem deseja participar. Encerramos esta etapa de 2007 com muitos avanços. Neste recesso aproveitaremos para reformular algumas coisas, como também estabelecer as metas para 2008. Espero que todos aproveitem as férias para aprofundar seus conhecimentos na plataforma. Retomaremos nossas atividades com o evento de boas vindas chamado .NET Day que ocorrerá em 2008. Atenciosamente, Ana Carolina Lima Líder - Soft.NET November 24 Artigo no SharpGames
November 19 Evento sobre o Microsoft Windows Media Center em Recife
A Partec, o grupo Sharp Shooters .NET e a Poli-UPE apresentam evento inédito em Recife focado em Windows Media Center, uma das apostas da Microsoft para a iminente era da TV Digital.
Dia: 20/11 Horário: 16:30 às 18:30 Local: Auditório da escola Politécnica da UPE Link para inscrições: http://msevents. microsoft. com/CUI/EventDet ail.aspx? EventID=10323598 51&Culture=pt-BR Orientações e detalhes: http://www.partecwe b.com.br/ wmc/
Palestras:
Oportunidades de Mercado com Windows Media Center Nesta palestra, vamos apresentar para desenvolvedores de software e provedores de conteúdos as oportunidades de criação de soluções que interagem com a TV por meio do Windows Media Center, bem como sua integração com as tecnologias de TV Digital em implantação no Brasil.
Palestrante: Gustavo Andrade é gerente de projetos da Partec, mestre e bacharel em Ciência da Computação pela UFPE e campeão nacional da competição Microsoft Imagine Cup 2005. Desde 2006, trabalha com o desenvolvimento de software para TV, com aplicações que variam de serviços bancários a entretenimento digital.
Desenvolvendo Aplicações em Media Center Markup Language Nesta palestra, vamos apresentar o Media Center Markup Language (MCML), linguagem de apresentação do Windows Media Center específica para a criação de interfaces ricas na TV e demonstrar sua utilização prática para a criação de um leitor de blogs na televisão.
Palestrante: Átila Bezerra é engenheiro de software da Partec no projeto MyTV e mestrando em Ciências da Computação pela UFPE. Desde 2005 atua em projetos de TV Digital, com tecnologias do SBTVD e de IPTV, tendo trabalhado com empresas como o Cesar e a Motorola.
O evento é gratuito. Colabore trazendo 1kg de alimento não perecível. November 10 Passos de uma certificação
Fiquei pensando o que poderia postar nesse espaço e pensei muito muito, cheguei até a fazer um esboço do que queria falar em "Passos para uma cerificação", mas acabei não conseguindo postar nada, sou meio que reservada mas de tanto falarem acredito que deva falar um pouco sobre isso. Enfim para os que não sabem e também para os que sabem consegui tirar minha primeira certificação agora sou MCP. Tudo comçou a um tempo atrás quando minha irmã do nada veio me falar sobre um tal de Proform, encarei o desafio e fui fazer. Cada semana era uma prova e várias pessoas eram desclassificadas e eu continuava, foi um caminhoo meio que longo (A AESO é meio longe hehehehe) mas cheguei ao fim e pude então fazer minha prova de certificação. Como uma tipica brasileira fui estudar praticamente faltando uma semana para fazer a prova e realmente não acreditava que poderia passar mas me esforcei muito pois queria pelo menos ter a sensação que "fiz minha parte". E então encarei a prova e passei, veio aquela sensação de dever cumprido misturado com um cansaço e felicidade. Mas valeu muito a pena. Agora é continuar a caminhada... October 31 Atualização........Pessoal, to meio sumida mas é que está tudo muito corrido devido a 1° Semana de Informática (SIC) realizada na Católica, como estou ajudando na Exposição (Museu) dos Computadores, tive que me ausentar um pouco dos blogs, visual studio hehehheeh. Para manter as coisas devidamente atualizadas vai demorar um pouco mas vou fazer, acredito que deva dedicar um post sobre minha certificação, para quem não sabe conseguir tirá-la agora sou MCP hehheehhehe olha o bolado :P vou dedicar um post também a essa exposição super interessante que estamos fazendo na Católica. Então acredito que daqui a umas duas semanas este espaço estará atualizado. October 13 Palestra sobre LINQ
Dando continuidade as palestras tivemos nesta terça (09/11) Roberto Medeiros, engenheiro de software da Inove Informática, falando sobre LINQ( Language Integrated Query ). Não vou poder postar muita coisa sobre a palestra porque infelizmente estaja numa reunião gerencial da célula e não pude acompanhá-la até o fim, mas o pouco que vi foi sufiente para perceber a série de facilidades que essa nova tecnologia vai nos proporcionar. (1) Roberto apresentando LINQ (2) Pessoal conhecendo LINQ (3) Pessoal ainda conhecendo LINQ (4) Tentando usar o temporizador da máquina deu trabalho heheheh
Mais informações sobre LINQ acessem o seguinte endereço http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx October 11 Programa da Microsoft treina em desenvolvimento e infra-estruturaA partir do dia 15 de outubro, estão abertas as inscrições para o
Student to Business, da Microsoft Brasil. O programa gratuito oferece
treinamento em tecnologia da informação a estudantes do ensino médio,
técnico e universitários. Os cursos de especialização são oferecidos em dez Estados do Brasil e irão capacitar os participantes em infra-estrutura e desenvolvimento, além de ensiná-los a usar a tecnologia da empresa. A plataforma .NET e a Microsoft Solutions Framework são exemplos do que os interessados conhecerão nas aulas voltadas a desenvolvimento. Os que buscam se especializar em infra-estrutura serão capacitados em administração de redes e no Windows Server 2003. O programa ocorre em três etapas - a primeira é básica e as outras são voltadas à área de interesse. Ao final das duas primeiras fases são feitos testes para avaliar se o participante continuará o treinamento. As inscrições devem ser feitas pelo site http://www.centrodeinovacao.org.br/ |
|
|