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¡Vamos a establecer la base para tu proyecto de Sistema de Biblioteca! Crearás la estructura de archivos básica que crecerá hasta convertirse 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 autoimplementadas:Title(string),Author(string) eIsAvailable(bool, con valor predeterminadotrue). 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í es donde residirá 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: Reúne 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 en el formato
title|author - Una entrada de usuario en el formato
name|memberId
Crea una instancia de Library con el nombre dado, un Book con el título y autor proporcionados, y un User con el nombre e ID de miembro proporcionados. Luego imprime tres líneas:
- El resultado de llamar a
GetInfo()en tu biblioteca - La información del libro en el formato
Book: {Title} by {Author} - Available: {IsAvailable} - La información del usuario en 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 encarga de una preocupación específica. ¡En las próximas lecciones, ampliarás estas clases con lógica de préstamo, 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 Usuario