Visão geral do projeto
Parte da seção Programação orientada a objetos do Journey de GDScript da Coddy. Lição 56 de 65.
Desafio
MédioNeste projeto, você vai criar um Sistema de Gerenciamento de Biblioteca em seis etapas: uma biblioteca, livros e usuários, empréstimos, busca, estatísticas e devoluções. Cada etapa começa a partir dos arquivos da etapa anterior.
Esta etapa cria a classe Library em library.gd. O código inicial já declara suas três propriedades:
library_name: o nome da bibliotecabookseusers: doisArray[String]que começam vazios. Por enquanto, eles armazenam títulos e nomes de usuários.
Complete os dois métodos:
- O construtor
_init(library_name)armazena o nome na propriedadelibrary_name. _to_string()retornaNAME Library (books: N, users: M), em queNeMsão os tamanhos dos dois arrays.
O código fornecido lê o nome da biblioteca na primeira linha e, em seguida, um comando por linha: book TITLE e user NAME adicionam itens aos arrays, info imprime as três propriedades e show imprime a biblioteca. Para esta entrada:
Community
info
book Dune
user Ada
showa saída é:
Name: Community
Books: 0
Users: 0
Community Library (books: 1, users: 1)Seu código deve ficar em library.gd. main.gd contém o código fornecido de entrada/saída e não pode ser editado.
Experimente você mesmo
extends Node
func _ready():
# Código de entrada/saída fornecido: mantenha-o como está
var library := Library.new(OS.read_string_from_stdin())
var line := OS.read_string_from_stdin()
while line != "":
var parts := line.split(" ", true, 1)
match parts[0]:
"book":
library.books.append(parts[1])
"user":
library.users.append(parts[1])
"info":
print("Name: ", library.library_name)
print("Books: ", library.books.size())
print("Users: ", library.users.size())
"show":
print(library)
line = OS.read_string_from_stdin()
Todas as lições de Programação orientada a objetos
1Fundamentos da POO
Arquivos externosIntrodução à POOClasses vs. objetosA palavra-chave selfMétodosPropriedadesConstrutor (_init)Revisão - Calculadora simples4Polimorfismo
Revisitando a Sobrescrita de MétodosDuck TypingClasses e Métodos AbstratosDesign de InterfacesRevisão - Calculadora de Formas7Sinais
O que é um sinal?Declarando e emitindoConectando-se a sinaisSinais com argumentosRevisão - Sistema de saúde10Padrões de Projeto Parte 2
Padrão CommandPadrão AdapterPadrão DecoratorPadrão Template MethodPadrão StatePadrão Composite2Propriedades de Classe
Variáveis de Instância vs. EstáticasFunções EstáticasMétodos Setters de PropriedadeMétodos Getters de PropriedadePrivado por ConvençãoRecapitulando: Gerenciador de Conta Bancária5Encapsulamento
Membros públicos e privadosValidação com settersOcultação de informaçõesPropriedades somente para leituraRevisão - Sistema de registros de alunos8Conceitos Avançados de POO
Composição vs. HerançaClasses InternasNós como ComponentesRefCounted vs. NodeEnums em Classes11Projeto: Gestão de Biblioteca
Visão geral do projetoClasses de livros e usuários3Herança
Herança básicaA palavra-chave superSobrescrita de métodosCadeias de herançaVerificações de tipo com isRevisão - Hierarquia de funcionários6Métodos especiais
Introdução aos métodos virtuaisO método _to_stringIteradores personalizadosRevisão - Lista personalizada9Padrões de Projeto Parte 1
Introdução aos Padrões de ProjetoPadrão SingletonPadrão FactoryPadrão ObserverPadrão StrategyPratique por conta própria: Compilador de GDScript online