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 configurar a base do seu projeto Library System! Você criará a estrutura básica de arquivos que se transformará em uma aplicação completa 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 Book. Por enquanto, crie uma classeBookno namespaceLibrarySystemcom três propriedades implementadas automaticamente: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 User. Crie uma classeUserno mesmo namespace com duas propriedades:Name(string) eMemberId(int). Inclua um construtor que aceite ambos os valores.Library.cs: É aqui que ficará sua lógica principal. 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 ponto de entrada onde você criará instâncias das 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 o autor fornecidos e um User com o nome e o 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 deverá ser:
City Central Library System Initialized
Book: The Great Gatsby by F. Scott Fitzgerald - Available: True
User: Alice Johnson (ID: 1001)Essa estrutura segue o Princípio da Responsabilidade Única — cada arquivo cuida de uma preocupação específica. Nas próximas lições, você expandirá essas classes com lógica de empréstimo, funcionalidade de pesquisa 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árioLógica do Sistema de EmpréstimosLINQ para BuscasInterface de Console / Interface de AdminTestes de Unidade (NUnit/xUnit)Pratique por conta própria: Compilador de C# online