Загрузка...

Нужна помощь с объектами и классами

Тема в разделе C# создана пользователем Виктор2355436674 5 фев 2023. 199 просмотров

Загрузка...
  1. Виктор2355436674
    Виктор2355436674 Автор темы 5 фев 2023 0 25 окт 2020
    Всех шарпников приветствую! Сейчас выполняю стажировочное задание и как-то завис на одном моменте.
    Тут у меня есть Main. Есть коллекция Carlist и в нее нужно записать объект, который содержит в себе Car, Human и Engine.
    Другими словами : мне нужно записывать объект, который содержит параметры трёх классов. Либо в объект Car засунуть Human и Engine и записывать так в коллекцию, но таким образом вылетает ошибка "Вы не можете вместо int\string записать Human\Engine"
    Буду ОЧЕНЬ благодарен!
    Будут вопросы пишите! Если нужен полный код, тоже пишите!
    CSHARP
    static void Main()
    {
    List<Car> CarsList = new();





    while (true)
    {
    Console.WriteLine("Привет! Что ты хочешь сделать? 1 - записать новую машину, 2 - вывести все машины, 3 - Задать команду машине ");

    switch (Console.ReadLine())
    {
    case "1":
    // сделать проверку на ввод
    // Сначала записываем водителя
    Console.WriteLine("Введи имя водиетля");
    string addname = Console.ReadLine();
    Console.WriteLine("Введи возраст водителя");
    int addage = Convert.ToInt32(Console.ReadLine());



    //запись машины
    Console.WriteLine("Какой тип у машины?");
    string addtype = Console.ReadLine();
    Console.WriteLine("Какой цвет у машины?");
    string addcolour = Console.ReadLine();
    int carid = 0;
    carid = carid++;

    //запись двигателя
    Console.WriteLine("Какой тип у двигателя?");
    string addetype = Console.ReadLine();
    Console.WriteLine("Сколько литров?");
    int addliters = Convert.ToInt32(Console.ReadLine());


    CarsList.Add(new Car(addtype, addcolour, carid, addname, addage, addetype, addliters ));
    Car(я тут много возился, поэтому наверно ничего не понятно)):
    CSHARP
      public string? Addtype { get; }
    public string? Addcolour { get; }
    public int Carid { get; }
    public string Addname { get; }
    public int Addage { get; }
    public string Etype { get; }
    public int Liters { get; }



    public Car(string type, string colour, int id, Human name, Human age, Engine etype, Engine liters)
    {
    this.type = type;
    this.colour = colour;
    this.id = id;
    this.name = name;
    this.age = age;
    this.etype = etype;
    this.liters = liters;

    }
    Human:
    CSHARP

    public class Human
    {
    public string name;
    public int age;


    public Human(string name, int age)
    {
    this.name = name;
    this.age = age;


    }
    }
    Enginge
    CSHARP
    public class Engine
    {
    public string etype;
    public int liters;

    public Engine(string etype, int liters)
    {
    this.etype = etype;
    this.liters = liters;
    }

    }
     
  2. CLS
    Интересно, куда стажируетесь?

    Случайно отжал шифт при переносе строки, не до конца написал...

    Советую изучить тему композиции, вы явно ее пропустили судя по вашему коду

    CSHARP
    // MAIN
    CarsList.Add(new Car(addtype, addcolour, carid, new Human(addname, addage), new Engine(addetype, addliters)));
    CSHARP
    // CAR
    public Car(string type, string colour, int id, Human human, Engine engine)
    {
    this.type = type;
    this.colour = colour;
    this.id = id;
    this.Human = human;
    this.Engine = engine;
    }
     
    5 фев 2023 Изменено
    1. Посмотреть предыдущие комментарии (1)
    2. Виктор2355436674 Автор темы
      CLS, большое спасибо! по хорошему знакомству взяли в консалтинговую компанию вот и стажируюсь:lefthand::righthand:
    3. CLS
  3. Android
    Android 5 фев 2023 разработка https://zelenka.guru/threads/6738766 7002 31 дек 2022
    Так ты в конструкторе присваиваешь объекты Human и Engine переменным с типом string и int. В классе Car убери все поля связанные с Human и Engine и вместо них создать поля с типом Human и Engine соответственно. В конструктор передавай уже созданные объекты
     
Top