0% Concluído
0/0 Steps
  1. Introdução ao TypeScript
    5 Tópicos
    |
    1 Teste
  2. Configuração e Instalação
    4 Tópicos
    |
    1 Teste
  3. Fundamentos do TypeScript
    6 Tópicos
    |
    1 Teste
  4. Tipos Avançados
    10 Tópicos
    |
    1 Teste
  5. Funções em TypeScript
    5 Tópicos
    |
    1 Teste
  6. Tipos de Objetos e Aliases
    5 Tópicos
    |
    1 Teste
  7. Interfaces
    5 Tópicos
    |
    1 Teste
  8. Classes em TypeScript
    7 Tópicos
    |
    1 Teste
  9. Genéricos
    4 Tópicos
    |
    1 Teste
  10. Módulos
    5 Tópicos
    |
    1 Teste
  11. Compilador TypeScript
    2 Tópicos
    |
    1 Teste
  12. Encerramento
Módulo 8, Tópico 1
Em andamento

Introdução às Classes

Módulo Progresso
0% Concluído

Nesta aula, entraremos em um dos conceitos mais fundamentais e poderosos da linguagem TypeScript: classes.

Em TypeScript, as classes são estruturas fundamentais para a programação orientada a objetos (POO). Elas permitem criar modelos ou protótipos para objetos, definindo atributos (propriedades) e comportamentos (métodos) que os objetos criados a partir delas herdarão. As classes são uma parte essencial do desenvolvimento em TypeScript, pois fornecem um meio de organizar e estruturar o código de forma orientada a objetos.

Elas facilitam a encapsulação de dados e lógica relacionada em unidades coesas, tornando o código mais organizado e fácil de manter. Além disso, as classes em TypeScript permitem a implementação de conceitos-chave da programação orientada a objetos, como herança, polimorfismo e encapsulamento.

Em TypeScript, uma classe é declarada usando a palavra-chave class, seguida pelo nome da classe. Aqui está um exemplo simples de declaração de classe:

class Animal {
    // Propriedades da classe
    name: string;
    age: number;

    // Construtor da classe
    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }

    // Método da classe
    speak() {
        console.log(`Olá, eu sou ${this.name} e tenho ${this.age} anos.`);
    }
}

Neste exemplo, temos uma classe chamada Animal com duas propriedades (name e age), um construtor que recebe valores iniciais para essas propriedades e um método chamado speak que imprime uma mensagem no console.

Propriedades e Métodos

As propriedades de uma classe são variáveis que armazenam informações sobre os objetos criados a partir da classe. Os métodos são funções que descrevem o comportamento dos objetos da classe. Ambos são definidos dentro do corpo da classe.

Se você já trabalhou com classes em JavaScript (ECMAScript 6 ou posterior), notará que a sintaxe em TypeScript é semelhante, pois o TypeScript é um superset de JavaScript. No entanto, o TypeScript adiciona recursos de tipagem estática que fornecem maior segurança e ajuda no desenvolvimento.

Exemplos de Código de Classes

Vamos dar uma olhada em alguns exemplos de código que ilustram como criar e usar classes em TypeScript. Esses exemplos ajudarão a solidificar os conceitos que discutimos até agora.

Exemplo 1: Criando uma Classe Pessoa

class Pessoa {
    nome: string;
    idade: number;

    constructor(nome: string, idade: number) {
        this.nome = nome;
        this.idade = idade;
    }

    saudacao() {
        console.log(`Olá, meu nome é ${this.nome} e eu tenho ${this.idade} anos.`);
    }
}

// Criando uma instância da classe Pessoa
const pessoa1 = new Pessoa("Alice", 30);

// Chamando o método saudacao
pessoa1.saudacao(); // Saída: Olá, meu nome é Alice e eu tenho 30 anos.

Neste exemplo, definimos uma classe Pessoa com propriedades nome e idade, um construtor para inicializar essas propriedades e um método saudacao que imprime uma mensagem de saudação.

Vantagens das Classes em TypeScript

  1. Tipagem Estática: TypeScript oferece a vantagem de tipagem estática, o que significa que podemos especificar os tipos de propriedades e métodos de uma classe. Isso ajuda a evitar erros de tipo em tempo de execução.
  2. Herança e Polimorfismo: Classes em TypeScript suportam herança e polimorfismo, permitindo criar hierarquias de classes e reutilizar código de forma eficaz.(Vamos ver isso nas proximas aulas desse modulo sobre classes)
  3. Encapsulamento: O uso de modificadores de acesso como public, private e protected permite controlar o acesso às propriedades e métodos de uma classe, melhorando a encapsulação.(Vamos ver isso nas proximas aulas desse modulo sobre classes)
  4. Métodos Estáticos: A capacidade de definir métodos estáticos em classes facilita a criação de utilitários e funções que podem ser usados sem a necessidade de criar instâncias da classe.(Vamos ver isso nas proximas aulas desse modulo sobre classes)

Em JavaScript, a orientação a objetos é baseada em protótipos, enquanto TypeScript introduz uma sintaxe mais familiar de classes, mais próxima da programação orientada a objetos em outras linguagens.

Além disso, em JavaScript, não há suporte nativo para tipos, tornando mais difícil a detecção de erros de tipo em tempo de compilação.

As classes em TypeScript, portanto, oferecem uma maneira mais estruturada e segura de trabalhar com objetos e herança, o que pode ser particularmente valioso em projetos de grande escala.

Agora, é hora de praticar e aplicar o que você aprendeu. Os exercícios práticos abaixo são projetados para ajudá-lo a consolidar seu conhecimento e ganhar experiência na criação e uso de classes em TypeScript.

Exercícios Práticos

Agora, vamos praticar a criação e uso de classes em TypeScript. Abaixo estão três exercícios para você aprimorar suas habilidades. Certifique-se de seguir as instruções detalhadas e use as informações fornecidas para concluir cada exercício.

Exercício 1: Criando uma Classe de Veículo Crie uma classe chamada Veiculo com as seguintes propriedades:

  • marca (string)
  • modelo (string)
  • ano (number)

Adicione um método descrever() que retorne uma string descrevendo o veículo com suas propriedades. Crie um objeto do tipo Veiculo e chame o método descrever() para exibir as informações no console.

Exercício 2: Gerenciando uma Lista de Tarefas Crie uma classe chamada ListaDeTarefas que represente uma lista de tarefas. Ela deve conter as seguintes funcionalidades:

  • Um array de strings para armazenar as tarefas.
  • Um método adicionarTarefa(tarefa: string) que adiciona uma tarefa à lista.
  • Um método listarTarefas() que exibe todas as tarefas no console.

Crie um objeto do tipo ListaDeTarefas e utilize os métodos para adicionar e listar tarefas.

Exercício 3: Modelando uma Loja Online Crie uma classe chamada Produto que represente um produto em uma loja online. O produto deve ter as seguintes propriedades:

  • nome (string)
  • preco (number)
  • quantidade (number)

Adicione um método calcularTotal(quantidade: number) que retorna o custo total com base na quantidade fornecida. Crie um objeto do tipo Produto e use o método calcularTotal() para calcular o custo total de um pedido de produtos.

Lembre-se de criar instâncias das classes e testar seus métodos para garantir que funcionem conforme o esperado.