C# – Conceitos Básicos

O que é C#?

 

C# (pronuncia-se cê xarpe) é uma linguagem de programação criada pela Microsoft e teve sua versão 1.0 lançada em 2002.

 

Internamente era conhecido como projeto COOL (C-like Object Oriented Language) e Anders Hejlsberg foi o engenheiro chefe.

 

Na época gentilmente apelidado de “Java da Microsoft”, o C# incorpora várias características da linguagem Java (criada na empresa Sun Microsystems sob liderança de James Gosling). Mas também teve seu design baseado em C, C++, Smalltalk, Delphi e Visual Basic.

 

C# – Conceitos Básicos

Orientado a objetos

 

A Programação Orientada a Objetos (POO) é um padrão de desenvolvimento. O termo foi criado por Alan Kay, mas as ideias foram utilizadas primeiramente na linguagem Simula 67, de Ole Johan Dahl e Kristen Nygaard, em 1967.

 

Ela foi criada para tentar representar o mundo real dentro de um programa de computador. A ideia básica é utilizar objetos virtuais para representar objetos reais. Por exemplo: cliente, pedido, país, etc.

 

Para uma linguagem ser considerada Orientada a Objetos, ela deve satisfazer alguns requisitos:

 

Abstração

 

É o conceito de, a partir de um objeto real, traduzir suas principais características dentro da aplicação, sem se preocupar com pontos acidentais.

 

Ou seja, traspor um objeto do mundo real para o mundo virtual através de aspectos relevantes do problema a ser resolvido.

 

Por exemplo, considere o objeto Cliente. Um cliente no mundo real tem um atributo chamado peso.

 

Numa aplicação de um banco (tipo conta corrente) meu objeto Cliente não precisa desta propriedade, pois é irrelevante para este tipo de sistema. Mas se estiver desenvolvendo um aplicativo de acompanhamento de dieta? Neste caso o peso é uma propriedade essencial.

 

Encapsulamento

 

Encapsulamento, como o nome já diz, consiste em proteger parte do código. Fazer este isolamento facilita a manutenção e torna o software mais flexível. Assim, detalhes internos do funcionamento do objeto ficam ocultos dos demais.

 

Exemplificando: imagine um objeto chamado Conta que possui uma propriedade saldo. Quando eu quiser mostrar o saldo na tela, eu não preciso saber que tipo de operações ele executa para chegar neste valor. Eu simplesmente peço o saldo e mostro.

 

Herança

 

Na herança um objeto pode estender todas as características de um outro objeto e ainda possuir suas próprias características.

 

Como exemplo podemos utilizar os objetos PessoaFisica e PessoaJuridica. Eles possuem características em comum, como nome e endereço. Para evitar a duplicação de código, criamos um objeto chamado Pessoa com nome e endereço. Daí os objetos PessoaFisica e PessoaJuridica podem ser herdeiras do objeto Pessoa.

 

Assim, os objetos PessoaFisica e PessoaJuridica possuem os atributos nome e endereço (por conta da herança) mas podem possuir características próprias. PessoaFisica tem o atributo CPF e o PessoaJuridica tem o CNPJ.

 

Polimorfismo

 

Polimorfismo vem do grego e significa “muitas formas”.

Neste conceito, objetos filhos do mesmo objeto pai podem ter comportamentos diferentes para uma mesma mensagem.

 

Voltando ao nosso exemplo anterior, os objetos PessoaFisica e PessoaJuridica possuem um atributo chamado ValidarDocumento. Como o tipo de documento é diferente de acordo com o tipo de Pessoa, este atributo (apesar do mesmo nome) se comporta de maneira diferente dependendo do documento (CPF ou CNPJ).

 

Máquina virtual

 

O C# usa o conceito de máquina virtual (como o Java).

 

E como isso funciona?

 

Em linguagens de programação anteriores (como o C++) o código fonte (o que você escreve) é convertido através do compilador em código binário (o que a máquina entende) sob medida para determinada arquitetura de hardware e sistema operacional.

 

Caso você precise que este mesmo programa seja executado em outra plataforma, é necessário reescrever parte dele para que ele fique compatível com este novo ambiente.

 

No C# existe uma camada intermediária entre o sistema operacional e a sua aplicação. Essa máquina virtual deixa o sistema operacional “transparente” para você. Ou seja, você não precisa se preocupar com o ambiente onde seu programa rodará, já que a máquina virtual fará isso por você. Esta máquina virtual é conhecida como CLR (Common Language Runtime).

 

O compilador C# transforma seu código em uma linguagem intermediária (que é comum a todas as linguagens da plataforma .NET), a CIL (Common Intermediate Language).

 

Garbage collector (coletor de lixo)

 

Um dos problemas mais comuns das linguagens “tradicionais” como o C++, é o Memory Leak (vazamento de memória).

 

O Memory Leak acontece quando uma área de memória alocada para uma determinada operação não é liberada depois de ser utilizada. Isso faz com que esta área não possa mais ser utilizada para outros fins. Quando isso acontece muitas vezes, o resultado é memória cheia, sistema lento e, em casos extremos, falha no sistema todo.

 

Por esse motivo programadores C++ devem prestar atenção redobrada e sempre liberar a memória depois de utilizá-la. Pode parecer bobagem, mas em C++ é muito fácil você cair nesse erro.

 

Mas no .NET não precisamos nos preocupar tanto, pois a plataforma conta com um Garbage Collector.

 

Claro que devemos sempre seguir as melhores práticas para utilizarmos a memória sempre com eficiência, mas é sempre bom saber que há outros processos para nos auxiliar.

 

E como funciona este Garbage Collector? Em resumo, ele gerencia a alocação de memória e sua liberação. De tempos em tempos ele varre a memória em busca de objetos não utilizados e libera seu espaço.

 

Palavras finais

 

Este artigo é apenas uma introdução aos conceitos básicos de C# e não pretende esgotar o assunto, portanto aguarde artigos específicos para cada tópico aqui discutido.

 

Só com a Programação Orientação a Objetos podemos ter uma série de artigos para vermos vários conceitos e aspectos deste importante paradigma no desenvolvimento de software.

 

O funcionamento do Garbage Collector é bem mais complexo do que o descrito aqui. E também merece artigos mais detalhados.

 

Iremos também ver em detalhes o funcionamento da máquina virtual da plataforma .NET. Se você ficou curioso, aguarde. O importante neste momento é entender o conceito, o resto veremos na hora certa.

 

Para ser avisado quando novos artigos forem publicados, se cadastre na Grupo VIP App Dev.

Comece pelo e-book GRATUITO

5 Passos Para Desenvolver Alexa Skills

Se você não sabe por onde começar, este e-book te mostra os passos para ser um desenvolvedor de skills de sucesso.
100% livre de spam.

Para enviar seu comentário, preencha os campos abaixo:

Deixe uma resposta

*

Seja o primeiro a comentar!