Przejdź do zawartości

Dyskusja:Object Pascal

Treść strony nie jest dostępna w innych językach.
Z Wikipedii, wolnej encyklopedii

Object Pascal v17 (dostarczony z Delphi 2005 Architect) umożliwia przeciążanie operatorów. Można by usunąć wpis porównawczy z C++, że OP nie potrafi przeciazac operatorow. Dodatkowo co autor mial na mysli "wykorzystanie specyficznych funkcji procesora"? wystarczy tak samo jak w C/C++ uzyc wstawki assemblera i mozna wykorzystac wszystkie jego wlasciwosci. Jedyna wada moim zdaniem to brak mozliwosci tworzenia kodu stand-alone.

Podpis: Zefir.

"Większość firm zaczyna wycofywać się..." - które firmy poza Embarcadero oferują kompilator Object Pascala? "Obecnie nazwa „Object Pascal” nie istnieje nawet w oficjalnym spisie TIOBE" - na chwilę obecną (06.2016) istnieje, używana jest tam nazwa "Delphi/Object Pascal". Paweł

  • Kompilator Object Pascala oferuje organizacja GNU (na licencji GPL). Możliwość skompilowania czystego kodu Object Pascal da Ci ich produkt o nazwie FPC (Free Pascal Compiler - w opcjach wybierasz dialekt (dostępny jest nawet dialekt delphi), zaś możliwość dodatkową pracy z formatkami da Ci ich produkt o nazwie Lazarus - środowisko graficzne, nie tylko dla Windows. Uważaj jednak na programy wielowątkowe używające Windows API - programy lubią się wysypywać z nieznanych przyczyn. Możliwość kompilowania pod windows x86 - nawet wielowątkowe napisane z użyciem WinAPI działają stabilnie - ma projekt Virtual Pascal (vp21), obecnie porzucony. 46.112.52.88 (dyskusja) 21:49, 31 gru 2016 (CET)[odpowiedz]

Obiektowość

[edytuj kod]

Gdzie została pokazana w artykule główna przewaga Object Pascala nad Pascalem i główna idea jego powstania? Skąd możemy wziąć kod na licencji C.C.0 lub public domain lub kompatybilnej z licencją wikipedii, który przedstawia sposób definiowania funkcji wewnątrz definicji klasy w sekcji interface i jej implementacji w sekcji implementation?

Mogę wstawić i zrzec się jakichkolwiek praw do tego kodu, ale chcę uniknąć twórczości własnej. Przydałoby się źródło, które zezwala na kopiowanie i rozpowszechnianie przykładów.

Porównanie z C++

[edytuj kod]
  • mechanizm modułów wraz z kontrolą widoczności nazw i sekcjami inicjalizacyjnymi/finalizacyjnymi, -- Nie do końca, ponieważ C++ ma możliwość hermetyzacji i w konstruktorze można inicjalizować pola.
  • tablice dynamiczne, -- std::vector jest tablicą dynamiczną.
  • wbudowany typ zmiennych plikowych – także uproszczone tworzenie plików składających się tylko z jednego typu danych, -- Może i nie ma wbudowanego, ale jest w bibliotece standardowej (std::fstream, std::ofstream, std::ifstream).
  • wirtualne konstruktory, -- Można napisać virtual Klasa( ) { ... };.
  • oddzielenie części deklaracji od instrukcji zwiększa czytelność kodu i zmusza do porządku, -- Nie wiem, czy dobrze zrozumiałem, ale można w C++ w ciele klasy zadeklarować, a poza klasą (z użyciem operatora ::) zdefiniować funkcję.
  • pętla for umożliwia enumerację po każdym elemencie zbioru w postaci: for zmienna in zbiór do), -- W C++ for(auto element : tablica) { ... }.
  • funkcje nie zwracające wartości nazwane są procedurami. -- a) można nazywać to jak się chce, każdy się domyśli; b) using procedure = void; lub typedef void procedure; lub #define procedure void
  • obiekty posiadają właściwości (properties) – także tablicowe i domyślne, zwiększa to czytelność kodu, -- Nie wiem, czy dobrze zrozumiałem, ale jak w jakiejś klasie napisze się np. int& x= pole_klasy;, to x może być uznane za właściwość (bardziej setter niż getter, bo przy getterze jakieś błędy, przynajmniej u mnie występują).
  • istnienie metaklas – ich obiekty zawierają referencje do klas, -- Można zrobić coś takiego class Klasa { InnaKlasa obiekt_innej_klasy; };.
  • mechanizm przedefiniowania operatorów (jedynie dla rekordów). -- W C++ tak samo się je definiuje jak w Pascalu, np.: ostd::vector, std::arrraperator +( ... ) { ... }.
  • wbudowane zbiory i liczne operacje na nich, co znacznie przyspiesza i upraszcza np. porównania, -- Tak samo jak ze strumieniami plików. Może i nie wbudowane, ale można tak powiedzieć, bo w STL-u. (std::vector, std::array, std::map, std::set, std::queue, std::stack...)

Użytkownik3 17:13, 2 mar 2021 (CET)[odpowiedz]