Автор Гілка: ООП & FreePascal  (Прочитано 4768 раз)

Відсутній MoD

  • Кореспондент
  • ***
  • дописів: 161
  • Карма: +0/-0
ООП & FreePascal
« : 2005-12-11 12:13:58 »
Хто пробував програмувати на Паскалі із застосуванням ООП? Які враження? Яка різниця між ним і С++? Чи може хтось пояснити агрегацію та делегування у FPC? В С++ їх реалізація дуже складна і потворна, чув, що в Паскалі із цим краще.

Відсутній skeletor

  • Новачок
  • *
  • дописів: 31
  • Карма: +0/-0
  • Linux - the BEST
Re: ООП & FreePascal
« Відповідей #1 : 2006-01-04 19:02:23 »
А яка різниця між самим Паскалем та С++? Не задавайте дурних питань.
Linux - the BEST

Відсутній MoD

  • Кореспондент
  • ***
  • дописів: 161
  • Карма: +0/-0
Re: ООП & FreePascal
« Відповідей #2 : 2006-01-06 02:01:22 »
Власне принципи ООП є більш-менш стандартними, от мене і цікавить різниця і особливості їх реалізації в двох різних мовах. Бо задовбало вже робити всілякі маразми типу класу Сінглтона для реалізації стандратних для ООП речей в С++. Хочеться спробувати щось інше. Нажаль я не можу знайти достатньо інформації самотужки, а також цікавлять конкретні приклади, тому задаю це питання тут і не вважаю його дурним:P

Відсутній papa

  • Новачок
  • *
  • дописів: 26
  • Карма: +0/-0
  • Що новенького?
Re: ООП & FreePascal
« Відповідей #3 : 2006-01-06 11:17:43 »
Свого часу мені прийшлось зіскочити з плюсів на Object Pascal, от перше що мене приємно вразило так це наявність метакласів.
В С++ існує підтримка множинного наслідування (яке є часто джерелом непорозумінь, котрі частково вирішує віртуальне наслідування), в Object Pascal - нема.
В Object Pascal краже реалізована організація доступу до членів класу (задовбали дружні класи в плюсах).
Не до порівнянь реалізація модулів (в Паскалю є і initialization, finalization тай 'Multiple and indirect unit references' гарно реалізовано, задовбали дефки в плюсах).
Про агрегацію та делегування ви й самі знаєте.
...
Найбільше зло в Object Pascal це оператор with.

Що саме про pattern програмування ви хочете взнати і що вас задовбало ?
Я не чаклун - я тільки навчаюся

zzandy(Guest)

  • Гість
Re: ООП & FreePascal
« Відповідей #4 : 2006-03-18 15:13:24 »
В С++ існує підтримка множинного наслідування (яке є часто джерелом непорозумінь, котрі частково вирішує віртуальне наслідування), в Object Pascal - нема.
В Object Pascal краже реалізована організація доступу до членів класу (задовбали дружні класи в плюсах).
Не до порівнянь реалізація модулів (в Паскалю є і initialization, finalization тай 'Multiple and indirect unit references' гарно реалізовано, задовбали дефки в плюсах).

Це те-ж саме, що сказати: на мотоциклі можна розігнатися дуже швидко і не вписатися в поворот, тому я ходжу пішки.

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: ООП & FreePascal
« Відповідей #5 : 2006-05-10 17:30:17 »
Взагалі - то ОО програми можна і на С писати. Страуструп писав, ніби це збочення. Потім для С система прозоріша, а компілятор С++ функціям імена перекручує...

Порівнювати паскаль і С++ - справа невдячна - вони ж не "родичі" як С та С++, С++ та Java...

А от писати програми на всьому можна - булоб що писати, особливо коли не треба систему мучити (так щоб результатом невдалого програмування ставала необхідність переустановити ОС  ;D)
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

zzandy

  • Гість
Re: ООП & FreePascal
« Відповідей #6 : 2006-05-10 21:48:19 »
А що таке агрегація? Дилегування, це щось зв`язане з указателями на методи? І що робить "Multiple and indirect unit references"?

Відсутній MoD

  • Кореспондент
  • ***
  • дописів: 161
  • Карма: +0/-0
Re: ООП & FreePascal
« Відповідей #7 : 2006-05-16 05:47:45 »
Агрегація - це композиція простих елементів в більш складний без указування власника, тобто, якщо знищується об'єкт власник, то його частини можуть і не бути знищенними, оскільки не є його частинами напряму - звичайно вони задаються вказівниками. Делегування - спосіб визначення поведінки віртуальних методів при наслідуванні, при чому під час виконання. В ідеалі, делегування може бути визначене і знищене в процесі виконання. От тільки лише декілька мов підтримують це, як стандарт мови... Щодо модулів, то в С/С++ це просто трохи тупа справа, бо всі модулі просто підставляються в код за допомогою макросів ще препроцесором, от і виникають ситуації, коли один і той самий модуль може бути включений двічі, чи в неправильному порядку - для того, щоб цього уникнути робляться макросні обв'язки, що забороняють включати код, якщо вже визначена відповідна мітка і т.п. В Паскалі цей механізм більш розумний і дозволяє уникати подібних ситуацій.

zzandy

  • Гість
Re: ООП & FreePascal
« Відповідей #8 : 2006-05-16 12:45:44 »
Brian W. Kernighan
Why Pascal is Not My Favorite Programming Language

http://www.cs.virginia.edu/~evans/cs655-S00/readings/bwk-on-pascal.html

Стаття 1981 року, втім не повністю застаріла.

Відсутній Scriptor

  • Новачок
  • *
  • дописів: 19
  • Карма: +0/-0
Re: ООП & FreePascal
« Відповідей #9 : 2006-06-24 19:32:29 »
Цитата
Хто пробував програмувати на Паскалі із застосуванням ООП?
Писав у 10 класі маленьку іграшку на Паскалі (вимога така в школі була).
Щоправда, то був Borland Pascal. :)
В цілому все нормально, проблем не було.
Характерні моменти - всі елементи public.

Цитата
Делегування - спосіб визначення поведінки віртуальних методів при наслідуванні, при чому під час виконання.
override?
З повагою,
Scriptor