Skip to content

Instantly share code, notes, and snippets.

@ardnaile
ardnaile / pc-builder.ts
Created June 3, 2025 22:29
Projeto Final - Design Patterns
interface IComputadorBuilder {
setProcessador(processador: string): this;
setPlacaMae(placaMae: string): this;
setMemoriaRAM(memoriaRAM: string): this;
setArmazenamento(armazenamento: string): this;
setPlacaDeVideo(placaDeVideo: string): this;
setFonte(fonte: string): this;
setGabinete(gabinete: string): this;
setSistemaOperacional(sistemaOperacional: string): this;
@ardnaile
ardnaile / conta-bancaria-state.ts
Created May 27, 2025 19:24
Aula 11 Design Patterns - Exercício 1
enum EstadoConta {
Ativa,
Bloqueada,
Inativa,
Suspensa,
Fechada
}
abstract class Estado {
abstract readonly estado: EstadoConta;
@ardnaile
ardnaile / notificacao-estoque.ts
Created May 27, 2025 18:28
Aula 10 Design Patterns - Exercício 2
enum TipoNotificacao {
ESTOQUE_BAIXO,
ESGOTADO
}
class Produto {
private quantidade: number;
constructor(quantidade: number){
this.quantidade = quantidade;
@ardnaile
ardnaile / sistema-blog.ts
Created May 27, 2025 17:59
Aula 10 Design Patterns - Exercício 1
class Article {
private observers: Observer[] = [];
addComment(comment: string): void{
console.log("Comentário: ", comment);
this.notify(comment);
}
subscribe(observer: Observer): void{
@ardnaile
ardnaile / processamento-http.ts
Created May 27, 2025 17:33
Aula 9 Design Patterns - Exercício 3
abstract class Handler {
protected nextHandler?: Handler;
setNext(handler: Handler): Handler {
this.nextHandler = handler;
return handler;
}
handle(request: string): void {
if (this.nextHandler) {
@ardnaile
ardnaile / interfaces-fluentes-pizza.ts
Created May 15, 2025 23:53
Aula 12 Clean Code - Exercício
type Tamanho = 'PEQUENA' | 'MEDIA' | 'GRANDE';
class Pizza {
protected tamanho!: Tamanho;
protected bordaRecheada: boolean = false;
protected sabores: string[] = [];
protected extras: string[] = [];
protected paraViagem: boolean = false;
private constructor() {}
@ardnaile
ardnaile / validacao-formulario.ts
Created May 7, 2025 23:31
Aula 10 Design Patterns - Exercício 1
class Formulario{
email: string;
senha: string;
constructor(email: string, senha: string) {
this.email = email;
this.senha = senha;
}
validar(): void {
const validacao1 = new ValidacaoTamanhoSenha();
@ardnaile
ardnaile / aprovacao-despesas.ts
Created May 7, 2025 22:59
Aula 10 Design Patterns - Exercício 1
abstract class Aprovador{
protected proximo: Aprovador | null = null;
// setando o proximo que vamos passar depois
setProximo(proximo: Aprovador): void{
this.proximo = proximo;
}
abstract aprovar(valor: number): void;
@ardnaile
ardnaile / sistema-contatos.ts
Created April 30, 2025 23:08
Aula 9 Design Patterns - Exercício 1
abstract class Contato{
nome: string;
constructor(nome: string){
this.nome = nome;
}
adicionar(contato: Contato): void{
throw new Error ("Esse componente não permite esse método");
}
@ardnaile
ardnaile / sistema-grafico.ts
Created April 28, 2025 13:14
Aula 8 Design Patterns - Exercício 2
// interface de implementação
interface Renderizador {
renderizarForma(forma: string): void;
}
// classes concretas
class RenderizadorWindows implements Renderizador {
renderizarForma(forma: string) { console.log(`Windows renderizando ${forma}`); }
}