//У цьому прикладі створено два класи. Клас Plane представляє літак з вказаними атрибутами. 
//Клас PlaneHandler інкапсулює дані та методи класу Plane. Він містить поле plane, 
//яке представляє об'єкт класу Plane, а також методи, які працюють з цим об'єктом. 
//Клас PlaneHandler відповідає за створення об'єкта класу Plane та виконання дій з ним, 
//таких як виведення інформації про літак та його зліт.
using System;

// Клас, що представляє літак
class Plane
{
    // Атрибути класу Plane
    public string Model { get; set; }  // Модель літака
    public int PassengerCount { get; set; }  // Кількість пасажирів
    public double MaxCargoWeight { get; set; }  // Максимальна вага вантажу
}

// Клас, який інкапсулює елементи-дані і елементи-методи класу Plane
class PlaneHandler
{
    // Поля даних для зберігання об'єкта класу Plane
    private Plane plane;

    // Конструктор класу PlaneHandler
    public PlaneHandler(string model, int passengerCount, double maxCargoWeight)
    {
        plane = new Plane
        {
            Model = model,
            PassengerCount = passengerCount,
            MaxCargoWeight = maxCargoWeight
        };
    }

    // Методи без параметрів, що працюють з об'єктом plane
    public void DisplayInfo()
    {
        Console.WriteLine($"Літак моделі {plane.Model} може вмістити {plane.PassengerCount} пасажирів та максимальний вантаж вагою {plane.MaxCargoWeight} кг.");
    }

    public void Fly()
    {
        Console.WriteLine($"Літак {plane.Model} злетів.");
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Створення об'єкта класу PlaneHandler, який створює об'єкт Plane
        PlaneHandler myPlaneHandler = new PlaneHandler("Boeing 747", 416, 248700);

        // Виклик методів об'єкта класу PlaneHandler, які взаємодіють з об'єктом Plane
        myPlaneHandler.DisplayInfo();
        myPlaneHandler.Fly();
    }
}
