Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/55: Рейтинг темы: голосов - 55, средняя оценка - 4.53
1 / 1 / 0
Регистрация: 13.11.2013
Сообщений: 43

Создать абстрактный класс Vehicle

16.03.2014, 19:27. Показов 11752. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1)Создать абстрактный класс Vehicle. На его основе реализовать классы Car (автомобиль), Bicycle (велосипед) и Lorry (грузовик). Классы должны иметь возможность задавать и получать параметры средств передвижения (цена, максимальная скорость, год выпуска и т.д.). Наряду с общими полями и методами, каждый класс должен содержать и специфичные для него поля.
2)Создать класс Garage, содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов.

В общем-то, по первому пункту вопросов нет. А вот со вторым возникли сложности. Как я понял, здесь нужно использовать что-то вроде List<>... Может быть засунуть все туда мне удастся, но как реализовать организованный вывод в моем коде я понятия не имею.

Если есть предложения по совершенствованию остального кода - пишите тоже.

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication2
{
    abstract class Vehicle
    {
        private int price;      // стоимость тр. средства
        private int maxspeed;   // максимальная скорость
        private int year;       // год выпуска
       
 
        // исключения для классов наследников
        protected Exception OutOfMaxBorder = new Exception("Исключение, превышена максимальна граница");
        protected Exception NonBellowZero = new Exception("Исключение, введенное значение не может быть отрицательным!");
 
        // свойство Стоимость
        public int Price
        {
            get { return price; }
            set { if (value > 0) price = value; }
        }
        // свойство Максимальная скорость
        public int MaxSpeed
        {
            get { return maxspeed; }
            set { if (value > 0) maxspeed = value; }
        }
        // свойство Год выпуска
        public int YearOfCreation
        {
            get { return year; }
            set { if (value <= DateTime.Today.Year) year = value; }
        }
    }
 
    class Bicycle : Vehicle // велосипед
    {
        private int passengers;
        public int MaxPassengers { get; set; }
 
        public Bicycle(int maxpassengers)
        {
            MaxPassengers = maxpassengers;
        }        
        public int GetCurrentPassengers()
        {
            return passengers;
        }
        public void SetCurrentPassengers(int n)
        {
            if (n > MaxPassengers)
            {
                throw OutOfMaxBorder;
            }
            else if (n < 0)
            {
                throw NonBellowZero;
            }
            passengers = n;
        }        
    }
 
    class Car : Vehicle //авто
    {
        public int Power { get; set; }
 
        public Car(int power)
        {
            Power = power;
        }        
    }
 
    class Lorry : Vehicle //грузовик
    {
        private int capacity;
        public int MaxCapacity { get; set; }
 
        public Lorry(int maxcapacity)
        {
            MaxCapacity = maxcapacity;
        }
        public int GetCurrentCapacity()
        {
            return capacity;
        }
        public void SetCurrentCapacity(int n)
        {
            if (n > MaxCapacity)
            {
                throw OutOfMaxBorder;
            }
            else if (n < 0)
            {
                throw NonBellowZero;
            }
            capacity = n;
        }
    }
 
    class Garrage //вот с ним, что-то нужно делать
    {
        
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Bicycle B1 = new Bicycle(3) { MaxSpeed = 60, Price = 15000, YearOfCreation = 2014 };
            B1.SetCurrentPassengers(1);   // посадили 1 человека на вело
 
            Car C1 = new Car(1000) { MaxSpeed = 450, Price = 80000000, YearOfCreation = 2013 };
 
            Lorry P1 = new Lorry(5000) { MaxSpeed = 120, Price = 1000000, YearOfCreation = 2008 };
            P1.SetCurrentCapacity(2500);   // загрузили 2500 кг груза
 
            Menu();
        }
 
        public static void Menu()
        {
            Console.Clear();
            Console.WriteLine("Choose your Vehicle");
            Console.WriteLine("1. Bicycle");
            Console.WriteLine("2. Car");
            Console.WriteLine("3. Lorry");
            Console.WriteLine("4. Show Garrage");
            Console.WriteLine("0. Leave garrage");
 
            string answer = Console.ReadLine();
            bool exit = false;
            Garrage garrage = new Garrage();
            
            switch (answer)
            {
                case "1":
                    {
                        Console.WriteLine("***** Велосипед *****");
                        
                        Console.ReadKey();
                        break;
                    }
                case "2":
                    {
                        Console.WriteLine("***** Авто *****");
                        
                        Console.ReadKey();
                        break;
                    }
                case "3":
                    {
                        Console.WriteLine("***** Грузовик *****");
                        
                        Console.ReadKey();
                        break;
                    }
                case "4":
                    {
                        Console.WriteLine("***** Весь гараж *****");
                        
                        Console.ReadKey();
                        break;
                    }
                case "0":
                    {
                        exit = true;
                        break;
                    }
            }
            if (!exit) Menu();
        }
    }    
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.03.2014, 19:27
Ответы с готовыми решениями:

Создать абстрактный класс Vehicle (транспортное средство)
Может у кого-нибудь завалялась пара задач на C# на наследование. 1- Создать абстрактный класс Vehicle (транспортное средство). На его...

Создать абстрактный класс Vehicle (транспортное средство)
Доброго времени суток,дорогие форумчане! Суть моего вопроса такова:имеется задание 1- Создать абстрактный класс Vehicle (транспортное...

Создать абстрактный класс «Товар», на его основе создать класс «Автомобиль»
Вечер добрый, а может и не добрый. В изучении C# столкнулся с такой проблемой - как исключения. Имею такую задачу. Создать абстрактный...

3
59 / 8 / 5
Регистрация: 30.01.2014
Сообщений: 41
18.03.2014, 02:33
Лучший ответ Сообщение было отмечено Vldorl как решение

Решение

Вот держи свою программу. Совет на будущее - отдельный класс в отдельном файле. В больших классах запутаешься!

Абстрактный базовый класс
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication_CyberForum
{
    abstract class Vehicle
    {
        // исключения для классов наследников
        protected Exception OutOfMaxBorder = new Exception("Исключение, превышена максимальна граница");
        protected Exception NonBellowZero = new Exception("Исключение, введенное значение не может быть отрицательным!");
 
        protected int price, maxspeed, year;
 
        // свойство Стоимость
        public int Price
        {
            get { return price; }
            set { if (value > 0) price = value; }
        }
        // свойство Максимальная скорость
        public int Maxspeed
        {
            get { return maxspeed; }
            set { if (value > 0) maxspeed = value; }
        }
        // свойство Год выпуска
        public int Year
        {
            get { return year; }
            set { if (value <= DateTime.Today.Year) year = value; }
        }
 
        //конструктор класа!!!
 
        public Vehicle(int price, int maxspeed, int year)
        {
            this.Price = price;
            this.Maxspeed = maxspeed;
            this.Year = year;
        }
 
                
    }
}
Класс для вело
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication_CyberForum
{
    class Bicycle : Vehicle
    {
        //оригинальное поле для байков
        public int MaxPassengers { get; set; }
        
        //конструктор + конструктор базового класса
        public Bicycle(int prise, int maxspeed, int year,int MaxPassengers) : base(prise,maxspeed,year)
        {
            this.MaxPassengers = MaxPassengers;
        }
           
    }
}
Класс для машин
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication_CyberForum
{
    class Car : Vehicle
    {
        //оригинальное поле для авто
        public int Power { get; set; }
 
 
        //конструктор + унаследованный конструктор
        public Car(int prise, int maxspeed, int year, int Power)
            : base(prise, maxspeed, year)
        {
            this.Power = Power;
        }   
    }
}
Класс для грузовиков
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication_CyberForum
{
    class Lorry : Vehicle
    {
        public int MaxCapacity { get; set; }
 
        public Lorry(int prise, int maxspeed, int year, int MaxCapacity)
            : base(prise, maxspeed, year)
        {
            this.MaxCapacity = MaxCapacity;
        }
    }
}
Класс с списками для добавления в список и вывода всех элементов с списка
С базами данных не стал делать, если интересно или нужно уже прочитаешь как...
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication_CyberForum
{
    class Garrage
    {
        public List<Lorry> lorrys = new List<Lorry>();
        public List<Car> cars = new List<Car>();
        public List<Bicycle> bicycles = new List<Bicycle>();
 
        public void AddLorry()
        {
            int prise = 0, maxspeed = 0, year = 0, MaxCapacity = 0;
            Console.WriteLine("Введите цену:");
            try
            {
                prise = Convert.ToInt32(Console.ReadLine());
            }
            catch { }
            Console.WriteLine("Введите максимальную скорость");
            try
            {
                maxspeed = Convert.ToInt32(Console.ReadLine());
            }
            catch { }
            Console.WriteLine("Введите год:");
            try
            {
                year = Convert.ToInt32(Console.ReadLine());
            }
            catch { }
            Console.WriteLine("Введите грузоподьемность");
            try
            {
                MaxCapacity = Convert.ToInt32(Console.ReadLine());
            }
            catch { }
            lorrys.Add(new Lorry(prise, maxspeed, year, MaxCapacity));
        }
 
        public void AddCar()
        {
            int prise = 0, maxspeed = 0, year = 0, Power = 0;
            Console.WriteLine("Введите цену:");
            try
            {
                prise = Convert.ToInt32(Console.ReadLine());
            }
            catch { }
            Console.WriteLine("Введите максимальную скорость");
            try
            {
                maxspeed = Convert.ToInt32(Console.ReadLine());
            }
            catch { }
            Console.WriteLine("Введите год:");
            try
            {
                year = Convert.ToInt32(Console.ReadLine());
            }
            catch { }
            Console.WriteLine("Введите мощьность:");
            try
            {
                Power = Convert.ToInt32(Console.ReadLine());
            }
            catch { }
            cars.Add(new Car(prise, maxspeed, year, Power));
        }
 
        public void AddBicycle()
        {
            int prise = 0, maxspeed = 0, year = 0, MaxPassengers = 0;
            Console.WriteLine("Введите цену:");
            try
            {
                prise = Convert.ToInt32(Console.ReadLine());
            }
            catch { }
            Console.WriteLine("Введите максимальную скорость");
            try
            {
                maxspeed = Convert.ToInt32(Console.ReadLine());
            }
            catch { }
            Console.WriteLine("Введите год:");
            try
            {
                year = Convert.ToInt32(Console.ReadLine());
            }
            catch { }
            Console.WriteLine("Введите количество пасажиров:");
            try
            {
                MaxPassengers = Convert.ToInt32(Console.ReadLine());
            }
            catch { }
            bicycles.Add(new Bicycle(prise, maxspeed, year, MaxPassengers));
        }
 
        public void GetAllLorry()
        {
            foreach (Lorry lorry in lorrys)
            {
                Console.WriteLine("Цена: {0}, Максимальная скорость: {1}, Год: {2}, Максимальная грузоподьемность: {3};", lorry.Price, lorry.Maxspeed, lorry.Year, lorry.MaxCapacity);
            }
        }
 
        public void GetAllCar()
        {
            foreach (Car car in cars)
            {
                Console.WriteLine("Цена: {0}, Максимальная скорость: {1}, Год: {2}, Мощьность: {3};", car.Price, car.Maxspeed, car.Year, car.Power);
            }
        }
 
        public void GetAllBicycle()
        {
            foreach (Bicycle bicycle in bicycles)
            {
                Console.WriteLine("Цена: {0}, Максимальная скорость: {1}, Год: {2}, Максимум пасажиров: {3};", bicycle.Price, bicycle.Maxspeed, bicycle.Year, bicycle.MaxPassengers);
            }
        }
 
    }
}

Ну и класс программы..
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication_CyberForum
{
    class Program
    {
        
        static void Main(string[] args)
        {
            Garrage garrage = new Garrage();
 
            while (true)
            { 
                int i=0;
                Console.WriteLine(@"Выберите нужное Вам действие:
1. Добавить в список велосипед;
2. Добавить в список машину;
3. Добавить в список грузовик;
4. Вывести все велосипеды из списка;
5. Вывести все машины из списка;
6. Вывести все грузовики из списка;
7. Выход.");
                 try
                 {
                     i=Convert.ToInt32( Console.ReadLine());
                 }
                catch{}
                 switch (i)
                 {
                     case 1: garrage.AddBicycle(); break;
                     case 2: garrage.AddCar(); break;
                     case 3: garrage.AddLorry(); break;
                     case 4: Console.WriteLine("Велосипеды:"); garrage.GetAllBicycle(); break;
                     case 5: Console.WriteLine("Машины:"); garrage.GetAllCar(); break;
                     case 6: Console.WriteLine("Грузовики:"); garrage.GetAllLorry(); break;
                     case 7: return;
                     default: Console.WriteLine(""); break;
                 }
            }
        }
    }
}
Надеюсь организовал то что тебе нужно было!
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
18.03.2014, 11:21
Эксепшны лучше как static писать, иначе куча объектов на каждую машину это бред.
2
1 / 1 / 0
Регистрация: 13.11.2013
Сообщений: 43
18.03.2014, 12:22  [ТС]
Все как нужно, и все работает, спасибо!
Сейчас еще добавлю пару строчек для вывода всего гаража
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.03.2014, 12:22
Помогаю со студенческими работами здесь

Создать абстрактный класс класс Human
Помогите, пожалуйста! Задача: Создать абстрактный класс класс Human c полями: Имя, Фамилия, Возраст,пол. Заранее благодарю!

Создать абстрактный класс
Требуется создать абстрактный класс «Транспортное средство», определить в нем поля: расход топлива (литров на 100 км), размер топливного...

Создать абстрактный класс
привет. Есть класс class Point { private double _x1; private double _y1; public Point() { ...

Создать абстрактный класс File
Задание: Создать абстрактный класс File, инкапсулирующий в себе методы Open, Close, Seek, Read, Write, GetPosition и GetLength. Создать...

Создать абстрактный класс «Театр»
Здравствуйте. Помогите, пожалуйста, с решением задачи: &quot;Требуется создать абстрактный класс «Театр», определить в нем с поля:...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru