Orientação a Objetos e TypeScript: Um guia para iniciantes
Uma breve introdução ao paradigma POO e por que TypeScript
Para a alegria dos meus coleguinhas da disciplina de Programação para Design, a partir de agora eu começo a escrever sobre Orientação a Objetos e a aplicação em TypeScript. Nesse primeiro texto, vou dar uma ideia mais geral do assunto. Depois vou discutir especificamente os outros assuntos (que não são poucos).
POO e Eu: Uma relação de amor e ódio
É, gente, eu nem preciso dizer que eu odiava POO com todas as forças. Eram outros tempos, eu estava começando o curso de Ciência da Computação e não via motivos para deixar o paradigma procedural, que eu aprendera antes na linguagem C. Era complicar algo que eu já entendia e dominava bem. Além disso, eu nunca fui um entusiasta da linguagem Java e isso tornou a experiência mais triste ainda.
Mas o tempo passou, eu descobri C++ e as coisas melhoraram. Eu já não odiava tanto POO e começava a entender a sua importância, tanto mercadológica quanto educacional, foi um amadurecimento. O tempo passou, muita coisa mudou e aqui estou eu, novamente navegando nos mares da POO.
E antes de falarmos de POO, que é um paradigma de programação, nós precisamos entender o que é um paradigma e o que isso muda na prática. Simbora, aviões.
Paradigmas de Programação: Que diabos é isso?
Um paradigma de programação nada mais é do que a forma como uma determinada linguagem é organizada. O paradigma diz muito sobre a linguagem e a forma com a qual você lida com ela. Eu sei, é difícil de entender a princípio, mas vamos lá.
Python é uma linguagem multiparadigma, e isso significa que ela permite que você trabalhe com varias maneiras de organização. Por exemplo: Você pode programar com ela de forma procedural juntamente com conceitos da programação funcional. Para meus colegas que aprenderam Python na disciplina de Fundamentos de Programação, o paradigma utilizado era programação imperativa, que se caracteriza por uma sequência de passos para atingir o objetivo do programa.
É talvez o paradigma mais simples, por isso geralmente aprendemos a programar dessa forma, e também é a causa pela dificuldade quando temos de migrar para um paradigma como OO.
Orientação a Objetos: E agora?
“Gata, você não é orientada a objetos, mas é cheia de classe”
Agora vamos falar do que realmente interessa, que é entender essa cantada.
A Programação Orientada a Objetos é um paradigma de programação que se baseia no conceito de objetos (jura?). Um objeto contém informações e ações, que interagem entre si durante a execução do programa. Geralmente, um objeto é uma representação de algo do mundo real. Vamos a um exemplo simples:
Objeto do tipo celular
Modelo: iPhone 5S
Câmera: 8mp
Memória Interna: 64gb
Tipo: Smartphone
Marca: Apple
Acima, temos um objeto do tipo celular. Esse objeto contém características que lhe são particulares, por exemplo, é um iPhone 5S, tem câmera de 8mp, memória interna de 64gb…agora, vamos ver outro exemplo:
Objeto do tipo celular
Modelo: Lumia 930
Câmera: 21mp
Memória Interna: 32gb
Tipo: Smartphone
Marca: Nókia
Assim como no exemplo anterior, nós também temos um objeto do tipo celular. Porém, apesar de ambos compartilharem os mesmos atributos, as suas características são diferentes. Podemos dizer que ambos são instâncias da Classe Celular. Classe? Mas como assim?
Classes e Objetos
Já vimos que o um objeto tem informações (que a partir de agora, chamaremos de atributos) e ações (que chamaremos de métodos e falaremos deles mais tarde). Vimos também que podem existir vários objetos que compartilham dos mesmos atributos, porém com características diferentes. E é aqui que entra a famosa Classe.
Na OO, uma Classe é um molde com o qual os objetos são “modelados”. É nela que está discriminado que atributos um objeto deve conter e os métodos relacionados ao mesmo. Por isso, quando eu disse que o iPhone 5S e o Lumia 930 são instâncias de uma Classe, eu quis dizer que eles são objetos diferentes, mas que compartilham do mesmo “molde”. Ele seria mais ou menos assim:
classe Celular {
modelo: String
camera: String
memoriaInterna: String
tipo: String
marca: String
}
Acima, eu defini a classe Celular, já seguindo um padrão de programação. Por enquanto, ficarei por aqui com o assunto POO. Nos próximos textos, falarei um pouco mais sobre Classes e Objetos, Encapsulamento, Polimorfismo, Protótipos e Herança, além dos famigerados diagramas de classe, e claro, como isso se aplica na prática.
Achou que o texto tinha acabado? Achou errado!
Vamos falar sobre TypeScript
TypeScript é basicamente um JavaScript modificado para funcionar como linguagens de tipagem estática, como Java. Nem sei se dá pra chama-lo de linguagem de programação, já que ele basicamente gera um código .js no final. Vamos dizer que ele é uma extensão da linguagem JavaScript. Ela foi criada pela Microsoft, e sendo bem sincero, tem lá as suas vantagens.
Escrever programas com tipagem clara e bem definida pode ser benéfico, já que você terá um programa mais organizado, melhor de ler e reduz a quantidade de erros a longo prazo. Tempos atrás, isso era algo que eu sempre buscava em outras linguagens, pois entendia que era essencial ter essa clareza nos argumentos e retorno dos meus métodos.
Em linguagens como Python, é possível declarar uma variável como tipo Str e depois sobrescrever a mesma com um valor Int. Isso é possível graças a tipagem dinâmica, que também é uma característica do TypeScript (herança do JS), mas a diferença aqui é que, a partir do momento em que você declara uma variável e define o tipo da mesma, a ferramenta de conversão não permite tal operação.
nome = “Yan”let nome: string = “Yan”
Portanto, falando de forma bem simples, essa é a grande diferença do TypeScript para o JavaScript. Todo o resto, incluindo a sintaxe, funções e operadores, é tudo igual. Ahh, nem JavaScript nem TypeScript necessitam do uso de ponto e vírgula para funcionar, é opcional.
Essas características fazem do TypeScript uma boa opção para aprender POO, eu admito. Mas não se enganem, é possível usar OO em Python, em JS e mais umas 35 linguagens segundo a Wikipédia.
Por enquanto, é isso. Não vou falar aqui sobre instalação, isso é meio chato e o Google tá aí, não é mesmo? No próximo texto, vou começar a trabalhar os conceitos da POO já com códigos em TS, então, dêem uma olhadinha na sintaxe.
Aqui é um bom lugar pra começar:
Estou escrevendo esses textos especialmente para meus coleguinhas do curso de Design Digital. Mas espero que possa servir para outros também :)