0 / 0 / 0
Регистрация: 30.10.2017
Сообщений: 33
1

Класс: Создать на основе базового класса Car три класса-автомобиля: Тойота, Феррари, Бугатти.

17.09.2018, 10:28. Показов 3521. Ответов 19

Всем привет! На днях дали эту задачу, пытался делать по-разному не хоть убей не могу сделать. К сожалению я пропустил пары по классам. А по C# я вообще плох. Подскажите как написать на эту задачу программу
Создать на основе базового класса Car три класса-автомобиля: Тойота, Феррари, Бугатти. Добавить класс Радио, в котором два метода: On(), Off().
В классе Car должны быть обязательно (кроме других) методы: Start(), Stop(), Speedup().
Необходимая функциональность: завести транспортное средство, включить/выключить радио, придать автомобилю ускорение, остановить автомобиль ит.п.
Учесть, что максимальная скорость Тойоты не выше 300 км/ч.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.09.2018, 10:28
Ответы с готовыми решениями:

Класс-наследник на основе базового класса
-----

Как построить экземпляр дочернего класса на основе готового экземпляра базового класса?
Если уже есть готовый объект базового класса. Могу я построить экземпляр дочернего на его основе,...

Создание базового класса Car
Здравствуйте, форумчане. Необходима помощь. Создать базовый класс Car для обработки информации...

Разработать класс Car. Добавить в класс 3 поля: марка автомобиля, цвет автомобиля и стоимость
Разработать класс Car. Добавить в класс 3 поля: марка автомобиля, цвет автомобиля (использовать...

19
807 / 556 / 238
Регистрация: 01.07.2018
Сообщений: 1,813
17.09.2018, 10:42 2
erenije,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    
  public class Car:Radio
    {
        public void SpeedUp() { }
        public void Start() { }
        public void Stop() { }
    }
 
    public class Toyota : Car
    {
 
    }
 
    public class Radio
    {
        public void RadionOn() { }
        public void RadioOff() { }
    }
 
Toyota myCar = new Toyota();
myCar.RadionOn();
myCar.SpeedUp();
Не понял причем тут максимальная скорость.
C#
1
2
3
4
public class Toyota : Car
    {
        public int MaxSpeed = 300;
    }
0
126 / 97 / 41
Регистрация: 01.03.2018
Сообщений: 267
17.09.2018, 10:58 3
Цитата Сообщение от PoPsa85 Посмотреть сообщение
public class Car:Radio
Цитата Сообщение от PoPsa85 Посмотреть сообщение
public int MaxSpeed = 300;
по рукам за такое)
1
807 / 556 / 238
Регистрация: 01.07.2018
Сообщений: 1,813
17.09.2018, 11:03 4
Young Vu, Что не так ? Мы сейчас будем говорить о сеттерах и что MaxSpeed должно быть private ? Главное что бы человек принцип понял и разобрался.
0
170 / 91 / 71
Регистрация: 10.05.2014
Сообщений: 432
17.09.2018, 11:38 5
erenije, я так понял, что нужно было что-то подобное

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    internal interface IRadio { void On(); void Off(); }
    internal interface IMaxSpeed { void MaxSpeed(); }
 
    public class Car: IRadio
    {
        protected int MaxSpeedValue { get; set; }
 
        public void SpeedUp() { }
        public void Start() { }
        public void Stop() { }
        public void On() { }
        public void Off() { }
    }
 
    public class Toyota: Car, IMaxSpeed { public void MaxSpeed() => this.MaxSpeedValue = 300; }
    public class Ferrari: Car, IMaxSpeed { public void MaxSpeed() => this.MaxSpeedValue = 400; }
    public class Bugatti: Car, IMaxSpeed { public void MaxSpeed() => this.MaxSpeedValue = 400; }
 
    class TestClass
    {
        void Test()
        {
            var myCar = new Toyota();
            myCar.On();
            myCar.SpeedUp();
            myCar.Start();
            myCar.Off();
            myCar.Stop();
        }
    }
0
807 / 556 / 238
Регистрация: 01.07.2018
Сообщений: 1,813
17.09.2018, 11:41 6
Zodt, Только про интерфейсы там ни слова.
0
Zodt
17.09.2018, 11:46
  #7

Не по теме:

PoPsa85, я, конечно, могу ошибаться, но, все таки, мне кажется, что это более верный подход

0
807 / 556 / 238
Регистрация: 01.07.2018
Сообщений: 1,813
17.09.2018, 11:49 8
Zodt,

Не по теме:

Самом собой. Только ТС в универе, на семинаре объяснять придется что это такое. А он даже про класс не в курсе )

0
Zodt
17.09.2018, 12:17
  #9

Не по теме:

PoPsa85, просто я не имею ни малейшего понятия как эту задачу решить без интерфейсов

0
125 / 105 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
17.09.2018, 12:32 10
а что мешает так сделать
в таком случаи по крайней мере авто это не радио
если хотим радио и обращаемся только из автомобиля в котором установлено
да а его в таком случаи может и не быть, а в варианте с интерфейсам и автомобилем из магнитолы
такое не получится
грубо говоря есть место под магнитолу но ее может и не быть

если ограничения скорости ну жно и на других то можно его вынести в класс Car и сделать виртуальным
а лучше еще Car и MaxSpeedValue абстрактным и реализовать уже в конкретных моделях

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public class Radio
    {
        public void On(){}
        public void Off(){}
    }
 
    public class Car 
    {
        public Radio Radio { get; } = new Radio();
 
        public void SpeedUp()
        {
        }
        public void Start()
        {
        }
        public void Stop()
        {
        }
    }
 
    public class Toyota : Car
    {
        protected int MaxSpeedValue { get; } = 300;
    }
    public class Ferrari : Car
    {
        
    }
    public class Bugatti : Car
    {
       
    }
 
    class TestClass
    {
        void Test()
        {
            var myCar = new Toyota();
            myCar.Radio.On();
            myCar.SpeedUp();
            myCar.Start();
            myCar.Radio.Off();
            myCar.Stop();
        }
    }
Добавлено через 1 минуту
с виртуальным будит как то так


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 public class Radio
    {
        public void On(){}
        public void Off(){}
    }
 
    public class Car 
    {
        public Radio Radio { get; } = new Radio();
 
        public void SpeedUp()
        {
        }
        public void Start()
        {
        }
        public void Stop()
        {
        }
        protected virtual int MaxSpeedValue { get; } = 200;
    }
 
    public class Toyota : Car
    {
        protected override int MaxSpeedValue { get; } = 300;
    }
    public class Ferrari : Car
    {
        
    }
    public class Bugatti : Car
    {
       
    }
 
    class TestClass
    {
        void Test()
        {
            var myCar = new Toyota();
            myCar.Radio.On();
            myCar.SpeedUp();
            myCar.Start();
            myCar.Radio.Off();
            myCar.Stop();
        }
    }
3
Zodt
17.09.2018, 12:42
  #11

Не по теме:

Wolflind, а вот это, кстати, хороший вариант! Лови плюс)

0
807 / 556 / 238
Регистрация: 01.07.2018
Сообщений: 1,813
17.09.2018, 12:48 12
Zodt, Wolflind, Согласен. Самый логичный и с точки зрения условия, правильный вариант.
0
Эксперт .NET
5856 / 4733 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
17.09.2018, 12:49 13
Мой вариант похож на предыдущий. Мог бы не выкладывать, но зря писал, что ли )
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System;
 
namespace Cars
{
    class Program
    {
        static void Main(string[] args)
        {
            Toyota toyota = new Toyota();
            toyota.Start();
            toyota.radio.On();
            toyota.SpeedUp();
            toyota.radio.Off();
            toyota.Stop();
            Console.ReadKey();
        }
    }
 
    class Radio
    {
        public void On() { }
        public void Off() { }
    }
 
    class Car
    {
        protected int speed;
        public Radio radio = new Radio();
        public void SpeedUp()
        {
            speed++;
        }
        public void Start() { speed++; }
        public void Stop() { speed = 0; }
    }
 
    class Toyota: Car
    {
        private const int MaxSpeed = 300;
        public new void SpeedUp()
        {
            if (speed < MaxSpeed) speed++;
        }
    }
    class Ferrari: Car 
    {
 
    }
    class Bugatti: Car 
    {
 
    }
 
}
2
0 / 0 / 0
Регистрация: 30.10.2017
Сообщений: 33
17.09.2018, 14:26  [ТС] 14
Тут надо типо каждое движение, запрограммировать ВОТ В ЧЕМ я не могу справится. К примеру надо выбрать машину Тойоту или феррари или буггати, потом включать его, потом выключать машину, увеличивать скорость. Включать радио и тд. Нужно каждое движение через консоль делать
0
Young Vu
17.09.2018, 14:57
  #15

Не по теме:

Цитата Сообщение от PoPsa85 Посмотреть сообщение
Что не так ?
вы унаследовали машину от радио. это как минимум странно)

0
valera_21
17.09.2018, 15:25
  #16

Не по теме:

мне вот почему-то кажется, что класс Car таки должен быть абстрактным

0
807 / 556 / 238
Регистрация: 01.07.2018
Сообщений: 1,813
17.09.2018, 15:35 17
valera_21,

Не по теме:

Тут уже не в классах дело. Тут уже ездить надо.

0
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
17.09.2018, 15:49 18

Не по теме:

Цитата Сообщение от PoPsa85 Посмотреть сообщение
Тут уже не в классах дело. Тут уже ездить надо.
:D


з.ы. я тут подумал, а мож эта, запретить хотя бы увеличивать скорость на выключенной машине? а то мало ли
з.з.ы. и мб имеет смысл для SpeedUp добавить параметр, насколько необходимо уввеличить скорость?
0
170 / 91 / 71
Регистрация: 10.05.2014
Сообщений: 432
17.09.2018, 16:54 19
Вообще, по-хорошему, код должен быть таким:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    public interface IRadio { void On(); void Off(); }
    
    public interface ICar { Mark Mark { get; } Model Model { get; } int MaxSpeedValue { get; } void SpeedUp(); void SpeedDown(); void Start(); void Stop(); }
 
    public interface ICarWithRadio : ICar {  IRadio Radio {get;} }
 
    public class Car: ICarWithRadio
    {
        public IRadio Radio { get; }
        public Mark Mark { get; set; }
        public Model Model { get; set; }
        public virtual int MaxSpeedValue { get; set; } = 60;
 
        public void SpeedDown() { }
        public void SpeedUp() { }
        public void Start() { }
        public void Stop() { }
    }
 
    public enum Mark { Toyota, Ferrari, Bugatti}
    public enum Model { Prada, LaFerrari, Chiron}
 
    class TestClass
    {
        void Test()
        {
            var car = new Car { Mark = Mark.Tayota, Model = Model.Prada, MaxSpeedValue = 300 };
 
            car.Start();
            car.Radio.On();
            car.SpeedUp();
            car.SpeedDown();
            car.Radio.Off();
            car.Stop();
        }
    }
0
125 / 105 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
18.09.2018, 08:14 20
Цитата Сообщение от erenije Посмотреть сообщение
движение, запрограммировать
тут уже весь класс сделан просто впишите в методы действия
Цитата Сообщение от Даценд Посмотреть сообщение
Мой вариант похож на предыдущий.
тут уже почти все реализовано осталось добавить проверки заведен или нет и разрешить увеличивать скорость или нет
а при остановке допустим сбрасывать скорость и вывести все в консоль все методы 1-2 строки
у вас проблема с выводом в консоль или условными операторами?

тут про условные операторы
тут вывод в консоль
тут свойства для создания переменно отвечающей за включено выключено радио заведен или нет автомобиль
тут о наследовании
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2018, 08:14
Помогаю со студенческими работами здесь

Создать массив указателей базового класса и присвоить ему адреса каждого из екземпляров класса
Всем привет. Есть условие задачи: Дан базовый класс Base у которого есть метод my_name, метод...

У класса Car создать метод GetModel, который возвращает строку "Unknown car model"
Я учусь на С#, и вот как бы понять, как именно эту задачу решать в С# (в консоле) 1. Реализовать...

Я хочу создать пользовательский класс в C#, на основе класса button
Обращаюсь к профессионалам, имеющим опыт разработки приложений на C#, связанных с базами данных....

Объявление наследуемого класса на основе базового
Всем привет. Зашёл в тупик... Возможно ли реализовать в C# следующее: у меня есть базовый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru