Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
kremuella
1

Определить на основе абстрактного класса производный класс

15.01.2010, 08:59. Показов 2276. Ответов 1
Метки нет (Все метки)

1. Определить произвольный базовый класс, содержащий конструктор, деструктор, данные (поля) и два метода класса, которые изменяют поля класса. Определить производный класс, в котором переопределяется метод базового класса. В основной программе определить объект производного класса, и вызвать для него метод как производного, так и базового класса.
2. Определить класс, в котором описать 3 поля (закрытые) и 2 функции класса. Создать трехуровневую иерархию классов, а именно на основе данного класса создать 2 производных класса, доопределив в каждом еще по одному полю и функции. В основной программе определить объект последнего производного класса, и вызвать для него все функции.
3. Определить абстрактный класс, содержащий 2 поля (защищенных) и 2 функции (из них одна абстрактная). Определить на основе абстрактного класса производный класс, содержащий дополнительно 1 поле (закрытое) и еще одну функцию. В основной программе определить объект производного класса, и вызвать для него все функции.


Если можно хотя бы что-нибудь))
Может у кого уже что-нибудь готовое есть, поделитесь пожалуйста))
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2010, 08:59
Ответы с готовыми решениями:

Разработать производный от абстрактного класса Figure класс и класс, производный от производного
Разработать базовый абстрактный класс Figure с пустым виртуальным методом print для вывода в...

Создать класс Triad (тройка чисел); определить метод сравнения триад. Определить производный класс Date
Создать класс Triad (тройка чисел); определить метод сравнения триад. Определить производный класс...

Создать класс Triad (тройка чисел), определить метод сравнения триад, определить производный класс Time с полями:час,мин
Создать класс Triad (тройка чисел), определить метод сравнения триад, определить производный класс...

Реализовать полиморфизм на основе абстрактного класса AnyFigure и его методов. Вывести координаты точки, треуг
Помогите пожалуйста решить задачу на Джава Реализовать полиморфизм на основе абстрактного класса...

1
233 / 95 / 15
Регистрация: 31.12.2009
Сообщений: 224
15.01.2010, 09:41 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Предлагаю Вам кусок кода из моего движка. Адаптируйте под свои нужды самостоятельно
Если будут вопросы, пишите, постараюсь ответить

Delphi
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
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
// ------------------ БАЗОВЫЙ КЛАСС АБСОЛЮТНО ТВЁРДОГО ТЕЛА ------------------
  TSolid = class
  private
    FMass,                     // масса [кг]
    FMomentOfInertia: Double;  // момент инерции [кг*м2]
 
    FPosition: TVector;        // текущие координаты центра масс [м]
    FFi: Double;               // текущий угол поворота против часовой стрелки [рад/с]
    FV: TVector;               // текущая линейная скорость [м/с]
    FW: Double;                // текущая угловая скорость [рад/с]
 
    FForce: TVector;           // равнодействующая сила [Н]
    FTorque,                   // момент [Н*м]
    FH: Double;                // к-нт поступательного трения о воздух
    FHw: Double;               // к-нт вращательного трения о воздух
    FEpsilon: Double;          // к-нт жёсткости
    FMu: Double;               // к-нт шероховатости (от 0 до 1)
 
    FShape: TConvexPolygon; // геометрическая форма тела в координатах
                            // относительно центра масс
 
    FCircumRadius: Double;  // радиус описанной окружности
    procedure SetMass(const Value: Double);
    procedure SetMomentOfInertia(const Value: Double);
    procedure SetEpsilon(const Value: Double);
    procedure SetH(const Value: Double);
    procedure SetHw(const Value: Double);
    procedure SetMu(const Value: Double);
    procedure SetShape(const Value: TConvexPolygon);
 
  protected
    // отработка столкновения с другим телом в одной точке
    procedure DoCollision(CSolid: TSolid; CPoint, CImpuls: TVector); virtual; abstract;
    // получить абсолютные координаты формы тела
    function GetAbsoluteShape: TConvexPolygon;
    // проинтегрировать кинематические параметры по Эйлеру :)
    procedure Integrate(dt: Double); virtual; abstract;
    // приложить силу
    procedure ApplyForce(const Force, R: TVector); virtual; abstract;
    // приложить импульс
    procedure ApplyImpuls(const Impuls, R: TVector); virtual; abstract;
  public
 
    // создать тело
    constructor Create; virtual;
 
    property Mass: Double read FMass write SetMass;
    property MomentOfInertia: Double read FMomentOfInertia write SetMomentOfInertia;
    property Position: TVector read FPosition write FPosition;
    property Fi: Double read FFi write FFi;
    property V: TVector read FV write FV;
    property W: Double read FW write FW;
    property H: Double read FH write SetH;
    property Hw: Double read FHw write SetHw;
    property Epsilon: Double read FEpsilon write SetEpsilon;    
    property Mu: Double read FMu write SetMu;
    property CircumRadius: Double read FCircumRadius;
    property Shape: TConvexPolygon read FShape write SetShape;
    property AbsoluteShape: TConvexPolygon read GetAbsoluteShape;
  end;
  // ---------------------------------------------------------------------------
 
 
  // неподвижное тело
  TStaticSolid = class (TSolid)
  private
  protected
    // отработка столкновения с другим телом
    procedure DoCollision(CSolid: TSolid; CPoint, CImpuls: TVector); override;
 
  public
    // создать
    constructor Create; override;
    // добавить силу
    procedure ApplyForce(const Force, R: TVector); override;
    // приложить импульс
    procedure ApplyImpuls(const Impuls, R: TVector); override;
    // проинтегрировать
    procedure Integrate(dt: Double); override;
  end;
 
 
---------- из секции implementation
 
{ TSolid }
 
constructor TSolid.Create;
begin
  inherited Create;
  // по умолчанию квадрат со стороной 1 м
  FShape := Quadrangle(
    Vector(-1, -1),
    Vector(-1, 1),
    Vector(1, 1),
    Vector(1, -1)
  );
 
  FMass := 1;       // 1 кг
  FEpsilon := 0.5;
  FH := 1;
  FHw := 5;
  FMu := 0.5;
  FPosition := Vector(0, 0);
  FFi := 0;
  FV := Vector(0, 0);
  FW := 0;
  FTorque := 0;
  FForce := Vector(0, 0);
end;
 
 
function TSolid.GetAbsoluteShape: TConvexPolygon;
var
  i: Integer;
begin
  with Result do
  begin
    SetLength(Points, Length(FShape.Points));
    for i := 0 to High(FShape.Points) do
    begin
      Points[i] := RotateVector(FShape.Points[i], FFi);
      Points[i].X := Points[i].X + FPosition.X;
      Points[i].Y := Points[i].Y + FPosition.Y;
    end;
    InsidePoint := FPosition;
  end;
end;
 
 
procedure TSolid.SetEpsilon(const Value: Double);
begin
  if Value > 1 then FEpsilon := 1 else
    if Value < 0 then FEpsilon := 0 else
      FEpsilon := Value;
end;
 
procedure TSolid.SetH(const Value: Double);
begin
  FH := Value;
end;
 
procedure TSolid.SetHw(const Value: Double);
begin
  FHw := Value;
end;
 
procedure TSolid.SetMass(const Value: Double);
begin
  if Value > 0 then FMass := Value;
end;
 
procedure TSolid.SetMomentOfInertia(const Value: Double);
begin
  if Value > 0 then FMomentOfInertia := Value;
end;
 
procedure TSolid.SetMu(const Value: Double);
begin
  if Value > 1 then FMu := 1 else
    if Value < 0 then FMu := 0 else
      FMu := Value;
end;
 
procedure TSolid.SetShape(const Value: TConvexPolygon);
var
  i: Integer;
  CurrRadius: Double;
begin
  if Length(Value.Points) >= 3 then
    FShape := Value
  else
    raise TPhisicsException.CreateFmt(
      'Форма тела не может содержать %d вершин', [Length(Value.Points)]);
 
  // пересчитываем радиус описанной окружности 
  FCircumRadius := LengthOfVector(FShape.Points[0]);
  for i := 1 to High(FShape.Points) do
  begin
    CurrRadius := LengthOfVector(FShape.Points[i]);
    if CurrRadius > FCircumRadius then
      FCircumRadius := CurrRadius;
  end;
end;
 
{ TStaticSolid }
 
procedure TStaticSolid.ApplyForce(const Force, R: TVector);
begin
  // пусто, т.к. объект статичен
end;
 
constructor TStaticSolid.Create;
begin
  inherited;
  Mass := STATIC_MASS;
  MomentOfInertia := STATIC_MOI;
  H := 0;
  Hw := 0;
end;
 
procedure TStaticSolid.Integrate(dt: Double);
begin
end;
 
procedure TStaticSolid.ApplyImpuls(const Impuls, R: TVector);
begin
end;
 
procedure TStaticSolid.DoCollision(CSolid: TSolid; CPoint, CImpuls: TVector);
begin
end;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2010, 09:41

Производный класс от класса из библиотеки
Приветствую. Как использовать приватные методы класса наследованного от абстрактного класса из...

Найти класс-наследник от абстрактного класса в массиве
Есть массив абстрактных классов &quot;GameObject&quot;, от него наследуется класс &quot;Plant&quot;, который тоже...

Класс строка,производный от класса Битовая_Строка
Помогите,пож,написать программу!!!!!!!!!!!!!!!!!! Описать базовый класс Строка. Обязательные поля...

Создать производный от класса Строка класс
Описать производной от класса Строка класс Строка_Идентификатор. Строки данного класса строиться...

Доступ к полю абстрактного класса через класс-потомок
Здравствуйте, уважаемые форумчане! Пытаюсь решить такую задачу. Я объявил в абстрактном классе...

Создать производный от класса «Человек» класс «Путешественник»
Создать производный от класса «Человек» класс «Путешественник», содержащий следующие данные: •...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.