1

Тема: ООП задачка

Досить давно не працював з ООП, та забув все. Менi не потрiбнe рiшення задач, а тiлькi вектор.

1 - Створити клас студент, у якого є масив Скіл. Чи потрібно зробити в такій "задачeй" два класи Скілу і Студент. І зробити масив об'єктів Скілу і якось передати Студенту?

2 - потрібно зробити книжковий магазин і клас Книгу у якій є автор, назва, вартість і жанр і все таке. Як мені вивести книги з магазину?

class Book {
        string _Name, _Author, _Genra;
        double _Price;
 
        public string Name {
            get { return _Name; }
            set { _Name = value; }
        }
 
        public string Author {
            get { return _Author; }
            set { _Author = value; }
        }
 
        public string Genra {
            get { return _Genra; }
            set { _Genra = value; }
        }
 
        public double Price {
            get { return _Price; }
            set { _Price = value; }
        }
 
        public Book() { }
        public Book(string name, string author, string genra, double price) {
            this.Name = name;
            this.Author = author;
            this.Genra = genra;
            this.Price = price;
        }
    }
 
    class BookStore {
        List<Book> store = new List<Book>();
 
        double _MoneyCapital;
 
        public double MoneyCapital {
            get { return _MoneyCapital; }
            set { _MoneyCapital = value; }
        }
 
        public void AddBook(string name, string author, string genra, double price) {
            Book book = new Book {
                Name   = name,
                Author = author,
                Genra  = genra,
                Price  = price,
            };
 
            store.Add(book);
        }
 
        public void MarkUP() {
 
        }
    }
 
    class Program {
        static void Main() {
            BookStore store = new BookStore();
            Book[] books = new Book[] {
                new Book("sad", "2wxd", "aaa", 24.56),
            };
 
            store.AddBook("sad", "2wxd", "aaa", 24.56);
 
            //foreach (Book b in store) {
            //    Console.WriteLine(book);
            //}
        }
    }

2

Re: ООП задачка

1. Так , для скілів робимо окремий клас
якось так

public class Skill
{
    public Guid ID {get; set;}
    public string Name {get; set;}
}

public class Student
{
    public Guid ID {get; set;}
    public string Name {get; set;}

    public List<Skill> Skills {get; set;}
}

3 Востаннє редагувалося Engineer (05.12.2020 23:07:32)

Re: ООП задачка

2. я б не радив використовувати в класі одночасно field & property якщо ви не плануєте робити якусь хитромудру логіку в гетерах і сетерах.
В клас BookStore додав метод GetBooks, що повертає повний список , якщо не задавати фільтр, або  згідно LINQ фільтру
якось так

using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApp1
{
    class Book
    {
        public string Name { get; set; }
        public string Author { get; set; }
        public string Genra { get; set; }
        public double Price { get; set; }

        public Book() { }
        public Book(string name, string author, string genra, double price)
        {
            Name = name;
            Author = author;
            Genra = genra;
            Price = price;
        }
    }

    class BookStore
    {
        List<Book> store = new List<Book>();

        public double MoneyCapital { get; set; }
       
        public void AddBook(string name, string author, string genra, double price)
        {
            Book book = new Book
            {
                Name = name,
                Author = author,
                Genra = genra,
                Price = price,
            };

            store.Add(book);
        }

        public void MarkUP()
        {

        }
        
        public IEnumerable<Book> GetBooks(Func<Book, bool> filter = null)
           => store.Where(filter ?? (x => true));        
    }

    class Program
    {
        static void Main(string[] args)
        {
            BookStore store = new BookStore();
            store.AddBook("sad", "2wxd", "aaa", 24.56);
            store.AddBook("sad1", "1wxd", "1aaa", 11.56);
            store.AddBook("sad2", "3wxd", "2aaa", 19.00);

            foreach (Book book in store.GetBooks()) // приклад фільтру GetBooks(x => x.Author == "1wxd" || x.Price > 20)
                Console.WriteLine($"Name {book.Name} Author {book.Author} genra {book.Genra} Price {book.Price:n2}");

            Console.ReadKey();
        }
    }
}