csharp-dotnet-xamarin

C# .NET – A Linguagem + Xamarin

Bom Dia pessoal,

Hoje não vamos falar só de Xamarin, vamos falar de C#.

Alguns dos visitantes do site não tem, ainda, uma experiência legal com a linguagem usada pela plataforma abordada e mencionaram dificuldades no desenvolvimento de algumas coisas. Então pensei em explicar um pouco de C#, da estrutura da linguagem e da POO. “Mas cara, existem tantos blogs e sites oficiais (MSDN e CodePlex por exemplo) que possuem vários tutoriais de execução, por que você simplesmente não informa a existência disso para esse pessoal para que eles primeiramente aprendam o C# e depois voltem para utilizar o Xamarin?” – Formas diferentes de explicar podem tornar as coisas mais fáceis de se entender. Aqui vamos utilizar o Xamarin para aprender o C#, além de somente usar o C# para aprender o Xamarin. Nada se Cria, tudo se transforma :)

.NET FRAMEWORK

O .NET Framework pode ser comparada a JVM do Java, nada mais é do que um ambiente instalado na máquina que executa o código de aplicações feitas nessa plataforma. Para isso, existem dois pontos chaves para o funcionamento e uso do .NET. O CLR (Common Language Runtime) que é responsável  por executar e manipular as aplicações e as BCL (Base Class Library) que são bibliotecas de classe com códigos já homologados que nos permite executar inúmeras funções padrões sem a necessidade de recria-las, como transformar um número em texto, fatiar uma palavra, contar caracteres, abrir e fechar janelas, entre algumas funções muito interessantes.

C#

O C#, a 5ª linguagem de programação mais usada no mundo e uma das CLR do .NET. A linguagem é simples de ser usada, tendo inúmeras funcionalidades pré implementadas e capazes de fazer varias coisas. Além de todas as funções da plataforma, temos hoje o total de 43.036 pacotes ÚNICOS (além das versões) no NuGet que é um repositório de extensões para desenvolvedores ,NET.  É uma linguagem Compilada, assim como o Java mas diferente do PHP que é interpretada. Tem uma sintaxe bem parecida com Java, C++, VB e Delphi. A linguagem teve sua primeira versão em 2002, juntamente com a primeira versão do .NET Framework.

POO

Muito bem, muito bom, já sabemos o que é o .NET Framework e o que é o C#. Agora vamos falar sobre como a linguagem e o framework implementam os conceitos básicos de POO:

Abstração : pode ser definida como a capacidade de representar cenários complexos usando termos simples.

Encapsulamento : pode ser definido como a tarefa de tornar um objeto o mais auto-suficiente possível.

Herança: pode ser definida como a capacidade de uma classe herdar atributos e comportamento de uma outra classe.

Polimorfismo: literalmente significa “muitas formas” ou “o estado de existir em muitas formas”. No mundo da programação, polimorfismo é muitas vezes definido como a “capacidade de objetos diferentes possuírem métodos de mesmo nome e mesma lista de parâmetros que quando chamados executam tarefas de maneiras diferentes”.

Executando a Teoria

Pessoal, houveram algumas alterações no código, no fim do post tem o link para o gitHub, caso ocorram falhas e não saibam resolver entrem em contato.

Vamos criar uma aplicação no Xamarin para podermos começar a executar tudo isso e um pouco mais.

Será considerado que você possui conhecimento em ao menos uma linguagem de programação, tendo sua lógica pré desenvolvida além do conhecimento de conhecimentos básicos com loops – for, foreach, while e do while -, decisões – if, else, switch case – e tipos de variáveis – Integer, String, Object.

Nível – 2/5 – Fácil

Abra a IDE – Visual Studio ou Xamarin Studio – e vá em criar novo projeto, vá em Templates -> Visual C# -> Mobile Apps e seleccione uma Blank App (Xamarin.Forms Portable). Dê o nome de “appPoo”.

No arquivo App.cs que vêm aberto remova toda a implementação do método App() deixando ele assim:

public App()
{

}

Na Solution Explore, clique com o botão direito em appPoo.iOS e procure a opção “Unload project” e clique na mesma. Faça o mesmo para app.Poo.WinPhone. Isso para utilizarmos apenas o Android.

No projeto appPoo, clique com o botão direito, vá em Add e clique em nova Pasta. Dê o nome de Interfaces a ela, crie uma outra com o nome de implementações, e uma terceira com o nome Modelos.

Aqui vamos começar a desenvolver algo de verdade. Não iremos trabalhar com armazenamento de dados por em quanto, mas vamos fazer alguns cálculos. Que tal trabalharmos com formas Funções de 1º, e 2º Grau? Aprendemos isso no ensino médio né? Quem disse que nunca iríamos utilizar? 😀 Se não se lembra do que estamos falando http://www.coladaweb.com/matematica/Content

Na pasta Modelos, clique com o botão direito -> add -> Class, dê o nome de Funcao para ela e adicione a assinatura public:

public interface Funcao

Cria uma pasta com o nome Paginas.

Na Pasta Interfaces, clique com o botão direito -> add -> class e seleccione o item interface na lista. Dê o nome de IFuncao para ela. Quando o arquivo abrir, coloque a assinatura public antes da palavra interface, ficara assim:

public interface IFuncao

Em Implementações, clique com o botão direito -> add -> class e seleccione a opção class, de o nome de Funcao, coloque a assinatura public como anteriormente.

Na classe Funcao faça com que essa classe implemente a interface criada anteriormente colocando, após o nome da classe, dois pontos (:) e o nome da interface (appPoo.Interfaces.IFuncao). Ficando assim:

public class Funcao: appPoo.Interface.IFuncao

Faça com que as classes da pasta implementação Herdem a classe Função:

public class FuncaoPrimeiroGrau : appPoo.Modelos.Funcao

public class FuncaoSegundoGrau : appPoo.Modelos.Funcao

Até então implementamos dois conceitos de POO chamados Polimorfismo e Herança

Agora vamos seguir para a heranças.

Na classe Funcao crie as seguintes propriedades:

public double incogA { get; set; }

public double incogB { get; set; }

public double igualdade { get; set; }

Vá na interface, e coloque a assinatura dos métodos Soma, Subtração, Divisão e Multiplicação, fazendo a interface ficar assim:

Vá na classe função e implemente esses métodos, para que fiquem da seguinte forma:

Agora aplicamos mais duas característica básicas de POO, que andam de mãos dadas, a Abstração e o Encapsulamento.

Agora vamos seguir com o desenvolvimento, fazendo com que as Implementações dos cálculos funcionem e criar a User-Interface (telas).

Na classe FuncaoPrimeiroGrau e FuncaoSegundoGrau crie um método construtor, ou seja, que inicia a classe, sem parâmetros e outro com as incógnitas como entrada, ficando assim:

FuncaoSegundo1

Na classe Funcao crie o método resolver do tipo void e com a assinatura virtual para que possa ser sobre-escrito:

public virtual void resolver()
{
}

Volte na classe FuncaoPrimeiroGrau e sobre escreva o método resolver, preenchendo o mesmo com a lógica para resolução de uma equação de primeiro grau:

public override void resolver()
{
base.resolver();

//Primeira subtraimos o valor da incogB do valor da igualdade e depois fazemos a divisão entre o
//resultado dessa subtração e incogA
double resultado = base.Divisao(base.Subtracao(base.igualdade, base.incogB), base.incogA);

}

Já a Função de Segundo grau é resolvida de forma diferente, Utilizando as formulas Δ = b² – 4ac e Bhaskara.

Vamos criar os métodos dessas funções na classe FuncaoSegundoGrau, ficando assim:

FuncaoSegundo2

Aqui nos vemos um exemplo em que saímos do padrão que estamos impondo no sistema, vou deixar para vocês resolverem para que atenda a POO. :)

Agora vamos criar o tão esperado APP, usaremos o padrão TabbedPage

Vamos criar uma página, botão direito na pasta Páginas -> Add -> new item -> Selecione Forms Xaml Page e de o nome de MasterPage para ela, mude a herança de ContentPage para TabbedPage do arquivo masterPage.xaml.cs e deixe os arquivos da MasterPage assim:

https://github.com/rafaelrmou/appPoo/blob/master/appPoo/appPoo/Paginas/MasterPage.xaml

https://github.com/rafaelrmou/appPoo/blob/master/appPoo/appPoo/Paginas/MasterPage.xaml.cs

E pronto. :)

Código no GitHub para consulta:
https://github.com/rafaelrmou/appPoo

Espero que tenham gostado e entendido um pouco sobre a linguagem e o ciclo de vida da plataforma.

Dúvidas entrem em contato.

Compartilhem o blog 😀

Avalie nosso post

Rafael Moura

Desenvolvedor .NET, mais de 5 anos de experiência, apaixonado por tecnologia, Xamarin Student Partner Regional Lead Central/South America, Xamarin Comunity Speaker, Xamarin Certified Mobile Developer e Windows Phone Developer.

7 comentários em “C# .NET – A Linguagem + Xamarin

    1. Opa Edu, Boa Tarde.

      Cara, aqui temos alguns posts sobre o Xaml, o interessante é estudar os componentes do Xamarin no site oficial (developers.xamarin.com). Caso queria trabalhar um design específico, manda um email pra gente lá em contato que nós te ajudamos 😀

      Um abraço!

  1. Rafael, tudo bem?

    Seguinte, sobre os erros que o pessoal deve estar relatando, a explicação no post ta fazendo o pessoal seguir uma linha diferente do que esta no projeto do Git e isso ta dando erro, uma das coisas é que você ta pedindo no post para criar um novo arquivo(class) com o nome Funcao em implementação, como aqui:

    /*
    Em Implementações, clique com o botão direito -> add -> class e seleccione a opção class, de o nome de Funcao, coloque a assinatura public como anteriormente.

    Na classe Funcao faça com que essa classe implemente a interface criada anteriormente colocando, após o nome da classe, dois pontos (:) e o nome da interface (appPoo.Interfaces.IFuncao). Ficando assim:

    public class Funcao: appPoo.Interface.IFuncao
    */

    E na verdade pelo teu arquivo do Git, não é para criar esse arquivo, é para colocar o appPoo.Interface.IFuncao na classe função já criada anteriormente na pasta modelos. E na pasta implementacao é para criar os arquivos(class) FuncaoPrimeiroGrau e FuncaoSegundoGrau que herdam de appPoo.Modelos.Funcao, porem como seguencia do codigo acima, tem o codigo abaixo, que não especifica se é para criar os arquivos(class) ou criar duas classes no arquivos funcao.cs que você pediu para criar na pasta implementacoes, no projeto no Git esta criado dois arquivos, como também acho que deve ser.

    /*
    Faça com que as classes da pasta implementação Herdem a classe Função:

    public class FuncaoPrimeiroGrau : appPoo.Modelos.Funcao

    public class FuncaoSegundoGrau : appPoo.Modelos.Funcao
    */

    Bom, tem mais algumas coisas que tem que fazer e tem no projeto do git, mas não ta explicado aqui.

    Outra coisa, me encaminhe um e-mail, gostaria de trocar uma ideia contigo sobre uma palestra.

    Att

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

%d blogueiros gostam disto: