OO com TypeScript
Classes e Objetos

Fala pessoal, blz?

Hoje começa um série de posts sobre Orientação a Objetos com TypeScript (:
Que tal falarmos, sobre Classes e Objetos?
Segundo o wikipedia:

Classe representa um conjunto de objetos com características afins. Uma classe define o comportamento dos objetos através de seus métodos, e quais estados ele é capaz de manter através de seus atributos.

Trocando em miúdos, classe define um conjunto de atributos e comportamentos de um ou vários objetos. Uma classe possui alguns membros. Estes como:

  1. Construtor
  2. Atributos / Propriedades
  3. Métodos / Funções

Um exemplo de classe padrão é :

class Pessoa {
	_nome : string; 
	constructor(){}
	dizerNome() {
		console.log("O nome é: " + this._nome);
	}
}

Onde uma Pessoa possui um Nome (atributo – propriedade), para ela existir como um objeto precisa de um (construtor) e ainda tem a capacidade de realizar uma ação (Método – função), que é dizerNome().

Mas, veja bem, um nome pode ser um número? Negativo, um nome é um texto. Por isso que declaramos:

_nome : string;

Onde o termo string (que é um tipo de dado), define que o nome é do tipo texto.

Agora, que tal criarmos um objeto desta classe?
Mas o que é um objeto? Um objeto é uma referência a um local da memória que possui um valor. Este, por sua vez, pode ser uma variável, uma função ou a uma instância de uma classe.

Um pequeno exemplo:

var p = new Pessoa(); // criamos um objeto "p" do tipo Pessoa. Ou seja, estamos instanciando a classe Pessoa.
p._nome = "lucas" // diz que o nome (atributo) para o objeto "p" é lucas.
p.dizerNome(); // agora o objeto "p" realiza a ação (método - função).

Finalizando…
Descrevemos uma classe bem simples, com seus métodos e atributos. Em breve vamos falar sobre modificadores de acesso, encapsulamento, herança e muitas outras coisas legais usando TypeScript!

Espero que tenham gostado, e não se esqueçam de curtir esse post e a nossa página no facebook (:
Abraços e até mais galera!!!

Leave a Reply

Your email address will not be published. Required fields are marked *