Estrutura do Projeto
Parte da seção Programação Orientada a Objetos do Journey de C# da Coddy — lição 62 de 70.
Desafio
FácilVamos definir a base para o seu projeto de Sistema de Biblioteca! Você criará a estrutura de arquivos básica que crescerá e se tornará um aplicativo completo de gerenciamento de biblioteca ao longo das próximas lições.
Você organizará seu código em quatro arquivos, cada um com uma responsabilidade específica:
Book.cs: Este arquivo conterá seu modelo de Livro. Por enquanto, crie uma classeBookno namespaceLibrarySystemcom três propriedades autoimplementadas:Title(string),Author(string) eIsAvailable(bool, com valor padrãotrue). Adicione um construtor que receba o título e o autor como parâmetros.User.cs: Este arquivo conterá seu modelo de Usuário. Crie uma classeUserno mesmo namespace com duas propriedades:Name(string) eMemberId(int). Inclua um construtor que aceite ambos os valores.Library.cs: É aqui que sua lógica principal residirá. Crie uma classeLibrarycom uma propriedadeName(string) e um construtor para defini-la. Adicione um método chamadoGetInfo()que retorne uma string no formato"{Name} Library System Initialized".Program.cs: Reúna tudo aqui. Este é o seu ponto de entrada onde você criará instâncias de suas classes e verificará se a estrutura funciona corretamente.
Você receberá três entradas:
- O nome da biblioteca
- Uma entrada de livro no formato
title|author - Uma entrada de usuário no formato
name|memberId
Crie uma instância de Library com o nome fornecido, um Book com o título e autor fornecidos, e um User com o nome e ID de membro fornecidos. Em seguida, imprima três linhas:
- O resultado da chamada de
GetInfo()na sua biblioteca - As informações do livro no formato
Book: {Title} by {Author} - Available: {IsAvailable} - As informações do usuário no formato
User: {Name} (ID: {MemberId})
Por exemplo, se as entradas forem:
City Central
The Great Gatsby|F. Scott Fitzgerald
Alice Johnson|1001A saída deve ser:
City Central Library System Initialized
Book: The Great Gatsby by F. Scott Fitzgerald - Available: True
User: Alice Johnson (ID: 1001)Esta estrutura segue o Princípio da Responsabilidade Única - cada arquivo lida com uma preocupação específica. Nas próximas lições, você expandirá essas classes com lógica de empréstimo, funcionalidade de busca e uma interface de console completa!
Experimente você mesmo
using System;
namespace LibrarySystem
{
class Program
{
public static void Main(string[] args)
{
// Ler as entradas
string libraryName = Console.ReadLine();
string bookInput = Console.ReadLine();
string userInput = Console.ReadLine();
// Analisar a entrada do livro (formato: title|author)
string[] bookParts = bookInput.Split('|');
string bookTitle = bookParts[0];
string bookAuthor = bookParts[1];
// Analisar a entrada do usuário (formato: name|memberId)
string[] userParts = userInput.Split('|');
string userName = userParts[0];
int memberId = Convert.ToInt32(userParts[1]);
// TODO: Criar uma instância de Library com o library name
// TODO: Criar uma instância de Book com o title e author
// TODO: Criar uma instância de User com o name e member ID
// TODO: Imprimir as informações da biblioteca usando GetInfo()
// TODO: Imprimir as informações do livro no formato: Book: {Title} by {Author} - Available: {IsAvailable}
// TODO: Imprimir as informações do usuário no formato: User: {Name} (ID: {MemberId})
}
}
}
Todas as lições de Programação Orientada a Objetos
1Fundamentos de POO
Arquivos ExternosNamespaces e DiretivasIntrodução a Classes e ObjetosA Palavra-chave 'this'Métodos e ParâmetrosCampos vs PropriedadesConstrutoresInicializadores de ObjetosRecapitulação - Calculadora Simples4Herança
Sintaxe Básica de Herança (:)A Palavra-chave 'base'Palavras-chave Virtual e OverrideClasses SeladasA Classe Base 'object'Recapitulação - Hierarquia de Funcionários7Recursos Avançados
Sobrecarga de OperadoresIndexadores (this[])Sobrescrita de ToString()Métodos de ExtensãoRecapitulação - Lista Personalizada10Padrões de Projeto Parte 1
Introdução aos Padrões de ProjetoSingleton Thread-SafePadrão FactoryPadrão Observer (Eventos)Padrão Strategy2Propriedades e Membros Estáticos
Propriedades AutoimplementadasPropriedades de Apenas Leitura/EscritaCampos e Métodos EstáticosClasses EstáticasMembros com Corpo de Expressão5Polimorfismo e Interfaces
Polimorfismo: Compilação vs ExecuçãoInterface vs Classe AbstrataMúltiplas InterfacesInterfaces ExplícitasUpcasting e DowncastingRecapitulação - Calculadora de Formas8Conceitos Avançados de POO
Composição sobre HerançaGenerics (Classes e Métodos)Delegates e EventosAtributos e ReflectionIDisposable e a Instrução usingFundamentos de Injeção de Dependência11Padrões de Projeto Parte 2
Padrão CommandPadrão AdapterPadrão DecoratorPadrão Template MethodPadrão StatePadrão Composite3Arquitetura de Classes
Dados de Instância vs EstáticosPalavras-chave 'readonly' e 'const'Campos de SuporteRecapitulação - Gerenciador de Conta Bancária6Encapsulamento
Modificadores de AcessoPropriedades para EncapsulamentoImplementação de Ocultação de DadosPadrões de ImutabilidadeRecapitulação - Registros de Estudantes9Argumentos Variáveis
A Palavra-chave 'params'Parâmetros OpcionaisArgumentos NomeadosSobrecarga de Métodos12Projeto: Sistema de Biblioteca
Estrutura do ProjetoModelos de Livro e Usuário