Как создать классы Человек и Автомобиль и присвоить автомобилю владельца?

Рейтинг: -1Ответов: 1Опубликовано: 24.01.2023
  1. Создать класс Человек.
    Свойства: имя; возраст.
    Методы: конструктор, принимающий два параметра: имя и возраст; метод, выводящий в консоль информацию о человеке.
  2. Создать класс Автомобиль.
    Свойства: марка, модель, год выпуска, номерной знак; владелец.
    Методы: конструктор, принимающий четыре параметра (т.е. все, кроме владельца): марка, модель, год выпуска, номерной знак;
    присвоить владельца - метод должен принимать экземпляр класса Человек и хранить экземпляр класса Человек в соответствующем поле, если возраст больше 18, иначе выводить в консоль соответствующее сообщение;
    метод, который выводит в консоль информацию об автомобиле и вызывает метод вывода информации класса Человек для вывода информации о владельце. Нужно несколько экземпляров класса Человек;
    несколько экземпляров класса Автомобиль;
    присвоить владельцев автомобилям.
    Немного набросал но код неправильный. Помогите пожалуйста
class Human {
    constructor(name, age) {
        this.name = name
        this.age = age
    }
    humanInfo() {
        console.log(`name: ${this.name}, age: ${this.age}`);
    }
}
class Car extends Human {
    constructor(brand, model, yearOfProduction, licensePlate) {
        super()
        this.brand = brand
        this.model = model
        this.yearOfProduction = yearOfProduction
        this.licensePlate = licensePlate
    }
    get age() {
        return this.age
    }
    set age(value) {
        if (value < 18) {
            console.log('You are too young')
            return
        }
        return this._age = value
    }
}
const human = new Human("Human", 35);
const car = new Car('Toyota', 'Camry', 2018, 'X123BM')

Ответы

▲ 1

Автомобиль не может наследоваться от человека. Да и по заданию этого не требуется. Необходимо передавать в метод класса "машина" экземпляр класса "человек" для присвоения собственника.

Пример реализации классов:

class Human {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  get info() {
    console.log(`HUMAN: ${this.name} ${this.age}`)
  }
}

class Car {
  constructor(brand, model, year, regnum) {
    this.brand = brand;
    this.model = model;
    this.year = year;
    this.regnum = regnum;
  }

  owner(owner) {
    if (owner.age < 18) {
      console.log('ACHTUNG: You are too young')
    } else { // Присваиваем владельца
      this.ownerName = owner;
    }
  }

  get carInfo() {
    console.log(`CAR: ${this.brand} ${this.model} ${this.year} ${this.regnum}`);
    // т.к. this.ownerName это экземпляр класса Human
    // то нам доступны все его методы, вызываем .info(Предварительно проверив)
    this.ownerName ? this.ownerName.info : console.log(`У ${this.brand}-${this.model} владельца нет`);
  }
}

const vasya = new Human('Vasia', 20);
const petya = new Human('Petya', 17);
const masha = new Human('Masha', 22);
vasya.info;
petya.info;
const volvo = new Car('volvo', 'xc', 2020, 'q234er');
const vaz = new Car('VAZ', 'granta', 2022, 'a567df');
const gaz = new Car('GAZ', 'BB', 2021, 'm555kd');

volvo.owner(vasya);
vaz.owner(petya);
vaz.owner(masha);

volvo.carInfo;
vaz.carInfo;
gaz.carInfo;