Estructura del Proyecto
Parte de la sección Programación Orientada a Objetos del Journey de C# de Coddy. Lección 62 de 70.
Desafío
Fácil¡Configuremos los cimientos de tu proyecto de sistema de biblioteca! Crearás la estructura básica de archivos que se convertirá en una aplicación completa de gestión de bibliotecas a lo largo de las próximas lecciones.
Organizarás tu código en cuatro archivos, cada uno con una responsabilidad específica:
Book.cs: Este archivo contendrá tu modelo Book. Por ahora, crea una claseBooken el espacio de nombresLibrarySystemcon tres propiedades implementadas automáticamente:Title(string),Author(string) yIsAvailable(bool, cuyo valor predeterminado serátrue). Añade un constructor que reciba el título y el autor como parámetros.User.cs: Este archivo contendrá tu modelo User. Crea una claseUseren el mismo espacio de nombres con dos propiedades:Name(string) yMemberId(int). Incluye un constructor que acepte ambos valores.Library.cs: Aquí estará tu lógica principal. Crea una claseLibrarycon una propiedadName(string) y un constructor para establecerla. Añade un método llamadoGetInfo()que devuelva una cadena con el formato"{Name} Library System Initialized".Program.cs: Une todo aquí. Este es tu punto de entrada, donde crearás instancias de tus clases y verificarás que la estructura funciona correctamente.
Recibirás tres entradas:
- El nombre de la biblioteca
- Una entrada de libro con el formato
title|author - Una entrada de usuario con el formato
name|memberId
Crea una instancia de Library con el nombre proporcionado, un Book con el título y el autor indicados, y un User con el nombre y el ID de miembro proporcionados. Después, imprime tres líneas:
- El resultado de llamar a
GetInfo()en tu biblioteca - La información del libro con el formato
Book: {Title} by {Author} - Available: {IsAvailable} - La información del usuario con el formato
User: {Name} (ID: {MemberId})
Por ejemplo, si las entradas son:
City Central
The Great Gatsby|F. Scott Fitzgerald
Alice Johnson|1001La salida debería ser:
City Central Library System Initialized
Book: The Great Gatsby by F. Scott Fitzgerald - Available: True
User: Alice Johnson (ID: 1001)Esta estructura sigue el principio de responsabilidad única: cada archivo se ocupa de una preocupación específica. En las próximas lecciones, ampliarás estas clases con lógica de préstamos, funcionalidad de búsqueda y una interfaz de consola completa.
Pruébalo tú mismo
using System;
namespace LibrarySystem
{
class Program
{
public static void Main(string[] args)
{
// Leer entradas
string libraryName = Console.ReadLine();
string bookInput = Console.ReadLine();
string userInput = Console.ReadLine();
// Analizar la entrada del libro (formato: title|author)
string[] bookParts = bookInput.Split('|');
string bookTitle = bookParts[0];
string bookAuthor = bookParts[1];
// Analizar la entrada del usuario (formato: name|memberId)
string[] userParts = userInput.Split('|');
string userName = userParts[0];
int memberId = Convert.ToInt32(userParts[1]);
// TODO: Crear una instancia de Library con el nombre de la biblioteca
// TODO: Crear una instancia de Book con el título y el autor
// TODO: Crear una instancia de User con el nombre y el ID de miembro
// TODO: Imprimir la información de la biblioteca usando GetInfo()
// TODO: Imprimir la información del libro en formato: Book: {Title} by {Author} - Available: {IsAvailable}
// TODO: Imprimir la información del usuario en formato: User: {Name} (ID: {MemberId})
}
}
}
Todas las lecciones de Programación Orientada a Objetos
1Fundamentos de OOP
Archivos externosNamespaces y directivasIntro a clases y objetosLa palabra clave 'this'Métodos y parámetrosCampos vs PropiedadesConstructoresInicializadores de objetosResumen - Calculadora simple4Herencia
Sintaxis básica de herencia (:)La palabra clave 'base'Palabras clave Virtual y OverrideClases selladas (Sealed)La clase base 'object'Resumen: Jerarquía de empleados7Características avanzadas
Sobrecarga de operadoresIndexadores (this[])Sobrescritura de ToString()Métodos de extensiónResumen - Lista personalizada10Patrones de diseño - Parte 1
Introducción a los patrones de diseñoSingleton Thread-SafePatrón FactoryPatrón Observer (Eventos)Patrón Strategy2Propiedades y miembros estáticos
Propiedades autoimplementadasPropiedades de solo lectura y escrituraCampos y métodos estáticosClases estáticasMiembros con cuerpo de expresión5Polimorfismo e Interfaces
Polimorfismo: Compilación vs. EjecuciónInterfaz vs. Clase AbstractaInterfaces MúltiplesInterfaces ExplícitasUpcasting y DowncastingRepaso: Calculadora de Figuras8Conceptos avanzados de POO
Composición sobre herenciaGenéricos (clases y métodos)Delegados y eventosAtributos y ReflexiónIDisposable y la sentencia usingFundamentos de Inyección de dependencias11Patrones de diseño, parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón Composite3Arquitectura de clases
Datos de instancia vs. estáticosPalabras clave 'readonly' y 'const'Campos de respaldoResumen - Gestor de cuentas bancarias6Encapsulamiento
Modificadores de accesoPropiedades para el encapsulamientoImplementación de ocultamiento de datosPatrones de inmutabilidadRepaso - Registros de estudiantes9Argumentos variables
La palabra clave 'params'Parámetros opcionalesArgumentos con nombreSobrecarga de métodos12Proyecto: Sistema de Biblioteca
Estructura del ProyectoModelos de Libro y UsuarioLógica del Sistema de PréstamosLINQ para BúsquedasInterfaz de Consola / Interfaz de AdministradorPruebas Unitarias (NUnit/xUnit)Practica por tu cuenta: Compilador de C# online