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.
Meu e-book Como Aprender a Programar do Absoluto Zero está GRATUITO por tempo limitado!
Olha o link: 👉🏼 http://celsokitamura.com.br/como-aprender-a-programar
Bora aprender a programar!