Абстрактные методы,все понятно(нет)

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Абстрактные методы,все понятно(нет)

Сообщение vvvch » 24.06.2016 23:21:06

pupsik
Понимаете, Вы ему хототите показать фрагментами, как это делается. А у человека нет общего понимания. Вот и надо ему прочесть что-то попроще и побыстрей. А то я предложил фундаментальную литературу. Может Вы знаете что порекомендовать?
Хотя пример, что Вы привели - хорош. Если он разбираться - хорошо, нет надо учебник.
Последний раз редактировалось vvvch 24.06.2016 23:29:34, всего редактировалось 1 раз.
Аватара пользователя
vvvch
постоялец
 
Сообщения: 105
Зарегистрирован: 26.04.2013 11:05:39
Откуда: г.Боровичи, Новг. обл.

Re: Абстрактные методы,все понятно(нет)

Сообщение Bombucho » 24.06.2016 23:28:30

pupsik писал(а):Пойдём иным путём, без учебников: http://www.delphibasics.ru/Abstract.php

Добавлено спустя 4 минуты 48 секунд:
И избавляйте себя от плохой привычки:
Код: Выделить всё
result:='.......'+'со стороной'+n+'см'+'имеет площадь:'+floatTostr((Square())+'см'+' '
      +'и периметр:'+floatTostr((Perimetr())+'см.'+'
. Зачем это в классе?


Ну чтобы проще вывести информацию в Label или showmessage (ну так "учат" нас :roll: )
Bombucho
новенький
 
Сообщения: 37
Зарегистрирован: 18.06.2016 22:02:38

Re: Абстрактные методы,все понятно(нет)

Сообщение vvvch » 24.06.2016 23:36:52

А где передаёщь в класс информацию и о длине сторон? Иначе зачем тебе свойство?
Аватара пользователя
vvvch
постоялец
 
Сообщения: 105
Зарегистрирован: 26.04.2013 11:05:39
Откуда: г.Боровичи, Новг. обл.

Re: Абстрактные методы,все понятно(нет)

Сообщение pupsik » 24.06.2016 23:46:03

Bombucho ссылка что то прояснила?
А где передаёщь в класс информацию и о длине сторон? Иначе зачем тебе свойство?
не пугайте человека странными словами. Не всё сразу :wink:
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Абстрактные методы,все понятно(нет)

Сообщение Bombucho » 24.06.2016 23:51:34

Bombucho писал(а):Пойдём иным путём, без учебников: http://www.delphibasics.ru/Abstract.php


В задании указывается, что методы должны быть абстрактными в примере по ссылке это условие выполняет эта строчка " procedure setArea; Virtual; Abstract; "
Bombucho
новенький
 
Сообщения: 37
Зарегистрирован: 18.06.2016 22:02:38

Re: Абстрактные методы,все понятно(нет)

Сообщение vvvch » 24.06.2016 23:53:34

pupsik
О свойстве, там в условии, сказано.

Добавлено спустя 4 минуты 48 секунд:
Bombucho
В примере, приведённом тебе, не относись к нему как к догме, у тебя может быть по другому, просто тебе надо понять как это делается. И что ты хотел спросить?

Добавлено спустя 2 минуты 8 секунд:
Мы хотим выяснить, понимаешь ли ты пример? Или тебе нужно общая информация о ООП?
Аватара пользователя
vvvch
постоялец
 
Сообщения: 105
Зарегистрирован: 26.04.2013 11:05:39
Откуда: г.Боровичи, Новг. обл.

Re: Абстрактные методы,все понятно(нет)

Сообщение Bombucho » 25.06.2016 00:20:09

vvvch писал(а):И что ты хотел спросить?


Я просто хотел спросить правильно ли я размышляю, и выполняю ли условия поставленного задания(если вы об этом)
Bombucho
новенький
 
Сообщения: 37
Зарегистрирован: 18.06.2016 22:02:38

Re: Абстрактные методы,все понятно(нет)

Сообщение vvvch » 25.06.2016 00:38:27

Bombucho
Да, правильно, обрати внимание как это сделано в классе предка и как он переписывался в наследниках. И ещё, сразу привыкай думать о классе, как о чёрном ящике, у которого снаружи видны только методы public и если в этом же модуле - protected(из др. модулей они не видны), другие используется внутри самого класса. Для визуального класса есть ещё published но тебе это пока не надо. Да, то что описывается сразу после имени класса, те-же published, хоть это и не указывается.
И ещё, в книгах написано одна видимость, в реальности немного иная, проще всего это поверить компилятором, после имени класса и точки нажимаем Ctrl-пробел, и он "вываливает" список методов что можно увидеть и использовать.
Аватара пользователя
vvvch
постоялец
 
Сообщения: 105
Зарегистрирован: 26.04.2013 11:05:39
Откуда: г.Боровичи, Новг. обл.

Re: Абстрактные методы,все понятно(нет)

Сообщение pupsik » 25.06.2016 01:25:21

Код: Выделить всё
unit Unit2;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils;

type

  { TFigura }

  TFigura = class(TObject)
      procedure get_name; Virtual; Abstract;
      procedure get_perimetr; Virtual; Abstract;
      procedure get_area; Virtual; Abstract;
  end;

  { TKub }

  TKub = class(TFigura)
      fname : string;
      fdlina : integer;
    protected
      procedure get_name; override;
      procedure get_perimetr; override;
      procedure get_area; override;
    public
      constructor Create;
      property name : string read fname;
      property dlina : integer read fdlina write fdlina;
  end;

implementation

{ TKub }

procedure TKub.get_name;
begin
  fname := ClassName;
end;

procedure TKub.get_perimetr;
begin
  //
end;

procedure TKub.get_area;
begin
//
end;

constructor TKub.Create;
begin
  get_name;
end;

end.

Если не ошибаюсь: у вас будет нечто подобное. Имя вам не было необходимости выводить. Остальную арифметику сами "добросаете". Ну..у и, возможно, ошибся я. :lol:
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Абстрактные методы,все понятно(нет)

Сообщение AlphaBlend » 29.06.2016 10:12:40

Bombucho Глядишь , Вы на форуме получите высшее образование :wink:
Аватара пользователя
AlphaBlend
постоялец
 
Сообщения: 207
Зарегистрирован: 22.05.2016 10:13:10

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 239

Рейтинг@Mail.ru