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

Наследование, полиморфные методы

12.06.2017, 19:21. Показов 1741. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
№1
Составить программу с одним родительским классом и двумя потомками. Потомки должны содержать виртуальные функции. Создать виртуальную функцию выдачи результатов расчета методов на экран монитора с указанием названий и полей и их значений соответствующего объекта. При этом создать объекты базового и производных типов, используя полиморфный контейнер - массив ссылок базового класса на объекты базового и производных классов (кол-во объектов >=5);
Родительский класс: Автомобили (поле название)
Потомки: Грузовой (поле - грузоподъемность р в тоннах)
Легковой (поле - объем двигателя V в см кубических)
Полиморфные методы: расход горючего на 100 км:
Грузовой автомобиль М=(Sqrt(p))* 100
Легковой M= 2,5*V

№2
Составить программу с абстрактным родительским классом и двумя объектами - потомками, модифицировать первую задачу..

Ребята, помогите пожалуйста, я честно признаюсь что не понимаю как делать подобные вещи (задачи более легкие - расчеты подсчеты даются легко) но тут, просто не могу понять, хочу разобраться, учителя к сожалению на встречу не идут, просто не объясняют - либо ты шаришь, либо отчисляйся.. Спасите хоть чем нибудь
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.06.2017, 19:21
Ответы с готовыми решениями:

Виртуальные методы и наследование
Здраствуйте. Не могли бы вы помочь добавить к этой программе наследование и виртуальные методы? using System; using...

Полиморфные классы и интерфейсы
Создать перечисления для представления дней недели. Вывести все значения на экран.

Наследование и вирт. методы
Привет!помогите сделать плз 1)Определите систему классов "Точка","Прямоугольник ","Эллипс", связанных отношением...

2
 Аватар для moskitos80
442 / 99 / 42
Регистрация: 04.10.2011
Сообщений: 359
13.06.2017, 01:16
хочу разобраться, учителя к сожалению на встречу не идут, просто не объясняют - либо ты шаришь, либо отчисляйся..
- Сочувствую. На сколько я осилил понять понять задание... Для второго варианта, как то так:
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
class Program
{
    static void Main(string[] args)
    {
        Car[] cars = {
            new PassengerCar("Toyota", 250), 
            new PassengerCar("Mersedes", 200), 
            new Truck("Mersedes Truck", 1500), 
            new Truck("Mazda Truck", 20000), 
            new Truck("MAN Truck", 30000), 
        };
 
        foreach (Car car in cars)
        { car.Print(); } // полиморфный вызов
    }
}
    
abstract class Car
{
    public string Name { get; }
 
    public Car(string name)
    { Name = name; }
 
    public virtual void Print()
    { Console.WriteLine($"Name: {Name}"); }
 
    public abstract double FuelConsumption();
}
 
// Грузовик
class Truck : Car
{
    public double Carrying { get; }
 
    public Truck(string name, double carrying) : base(name)
    { Carrying = carrying; }
 
    public override double FuelConsumption()
    { return Math.Sqrt(Carrying) * 100; }
 
    public override void Print()
    {
        base.Print();
        Console.WriteLine($"Carrying: {Carrying:F} T");
        Console.WriteLine($"Fuel consumption: {FuelConsumption():F} l/100km\n");
    }
}
 
// Легковушка
class PassengerCar : Car
{
    public double EngineVolume { get; }
 
    public PassengerCar(string name, double engineVolume) : base(name)
    { EngineVolume = engineVolume; }
 
    public override double FuelConsumption()
    { return 2.5 * EngineVolume; }
 
    public override void Print()
    {
        base.Print();
        Console.WriteLine($"Engine volume: {EngineVolume:F} cm^3");
        Console.WriteLine($"Fuel consumption: {FuelConsumption():F} l/100km\n");
    }
}
Для первого варианта думаю сам уже додумаешься.
1
34 / 34 / 16
Регистрация: 04.06.2017
Сообщений: 158
13.06.2017, 09:38
немного теории...

Абстрактный класс описывает множество объектов имеющих нейкие общие свойства например нахождение в определенном месте, движение (вправо влево прямо назад) и т.д. он не имеет понятие что это за объект, это может быть животное, человек, авто и многое другое, а следовательно он не может создать сам объект, но делает то что может, тоесть описывает все что присуще всем объектам.

Классы наследники расширяют описание, свойства и методы базового класса. Т.е. скажем автомобиль не может двигаться вверх вниз, а самолет может тогда наш абстрактный базовый класс транспорт будет иметь описание движений влево, вправо, вперед, назад, а его наследник, класс самолет, к уже имеющимся описаниям движения, добавит еще описаие движения вверх и движения вниз, присущие только самолету. Т.е. автомобиль о возможности движения вверх вниз ничего знать не будет и уж тем более не начнет двигаться.

Виртуальный метод описывает, нейкое свойство присущее разным объектом, но у которых оно реализуется по разному, например движение... самолет летит, заяц прыгает, человек ходит мошина ездит. тобишь переопределив виртуальный метод в каждом классе, каждый объект будет совершать присущее именно ему. Заяц будет прыгать, машина ездить, человек ходить, самолет летать

Вроде все вкратце...

ну и наследование от обычного класса, делает то же что и от обстрактного, тобишь расширяет возможности но в отличии от абстрактного класса объект обыкновенного класса может существовать сам по себе. например человек, ученик, студент, рабочий... ученик, студент, рабочий наследники человека т.е. все они люди, но не каждый человек, обязан быть рабочим, студентом или учеником тоесть объект может существовать, даже не являясь кемто из наследников
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.06.2017, 09:38
Помогаю со студенческими работами здесь

Полиморфные методы
Имеется базовый класс TFigures и три потомка от него - TCircle, TRectangle, TTriangle. В TFigures имеется метод LoadFromFile -...

Наследование и методы
Доброго времени форумчане! Такой вопрос: package com.company; public class Main { public static void main(String args) { ...

Наследование и виртуальные методы
В описании задания буквой А) обозначается задание на базовый класс, а буквой Б) - на класс наследник, или класс, использующий класс А как...

Наследование и виртуальные методы
Начал разбираться с темой наследование и не совсем понимаю как наследуются виртуальные методы, конструкторы и деструкторы виртуальные и...

C++ ООП Наследование методы
у меня тут класс A и класс B который наследует B наслудет конструкор класса A, в этом конструторое идет вызов метода из A а мне надо...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru