🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.pascal
Article #93019

Re: Fpc -- nowe elementy jezyka

#93019
From: Grzegorz Skoczylas
Date: Mon, 07 Jun 2010 23:03
70 lines
3338 bytes
W dniu 2010-06-07 23:27, webmajsterek@poczta.onet.pl pisze:
>> W dniu 2010-06-04 13:30, webmajsterek@poczta.onet.pl pisze:
>>> widze w jednym z komponentów od lazarusa  w deklaracji clasy taki kod
>>>
>>> strict protected
>>>
>>> co daje taka konstrukcja ??
>>
>> Standardowa deklaracja *protected* powoduje, że z objętych nią elementów
>> mogą korzystać klasy potomne oraz cały kod będący w tym samym module (unit).
>>
>> Z elementów objętych deklaracją *strict protected* mogą korzystać
>> wyłącznie klasy potomne.
>>
>> Tak jest w Delphi. Sądzę, że we FPC jest tak samo.
>>
>> W Delphi jest również *strict private* - działa analogicznie, tzn.
>> jeżeli coś jest *private* to można z tego korzystać w całym kodzie w tym
>> samym module, w którym jest zdefiniowana klasa. Natomiast *strict
>> private* powoduje, że można z tego korzystać wyłącznie w kodzie klasy.
>>
>
> a właśnie to mnie dziwiło że w pascalu niby pole prywatne ( hermetyzacja ) a
> jednak z danego unitu inny fragment kodu może modyfikować te pola .

Czasem to jest wygodne.

W C++ w tym celu wprowadzono funkcje zaprzyjaźnione.

> a widze jeszcze ze prze FPC 2.5 przechodzi taka konstrukcja
>
>   type  jakis_objekt=class()
>
>              var  jakie_spole:typ_danych;
>         end;
>
> zmienia cos dodanie "var"  w tak zdefiniowanym polu ??

Chyba tylko porządkuje sposób zapisu.

W Delphi wprowadzili również stałe definiowane wewnątrz klasy. W takim 
razie trzeba było jakoś odróżnić stałe od zmiennych. Przypuszczam, że
w FPC jest analogicznie.

Można też użyć "class var". To jest zmienna globalna, ale dostępna tylko 
w obrębie klasy.

Na przykład:

type
   JakisObiekt = class(KlasaBazowa)
   strict private
     const
       { Stałe dostępne tylko w kodzie klasy }
       MaxLbaInstancji = 10;
     class var
       { Zmienne globalne, wspólne dla wszystkich instancji klasy }
       LbaInstancji:  Cardinal;
     var
       { Zestaw zmiennych oddzielny dla każdej instancji obiektu }
       WlasnaZmienna:  JakisTyp;
     { konstruktory, destruktor, definicje metod itd. }
   end;

-- 
Pozdrawiam,

Grzegorz Skoczylas
http://gskoczylas.rekord.pl
----------------------------------------------
Technical Details
Message-ID: <hujtt4$sp0$1@news.dialog.net.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail
References: <huas3s$adg$1@news.dialog.net.pl> <60b5.0000083c.4c0d6452@newsgate.onet.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail
From: Grzegorz Skoczylas <gskoczylas@kasuj-to.rekord.pl>
Newsgroups: pl.comp.lang.pascal
Subject: Re: Fpc -- nowe elementy jezyka
Date: Tue, 08 Jun 2010 01:03:55 +0200
Organization: Dialog Net
Lines: 70
Message-ID: <hujtt4$sp0$1@news.dialog.net.pl>
References: <huas3s$adg$1@news.dialog.net.pl> <60b5.0000083c.4c0d6452@newsgate.onet.pl>
NNTP-Posting-Host: 78.8.104.124
Mime-Version: 1.0
X-Trace: news.dialog.net.pl 1275951844 29472 78.8.104.124 (7 Jun 2010 23:04:04 GMT)
X-Complaints-To: abuse@dialog.net.pl
NNTP-Posting-Date: Mon, 7 Jun 2010 23:04:04 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.8.1.23) Gecko/20090812 Thunderbird/2.0.0.23 Mnenhy/0.7.6.666
In-Reply-To: <60b5.0000083c.4c0d6452@newsgate.onet.pl>
X-Antivirus: avast! (VPS 100607-2, 2010-06-07), Outbound message
X-Antivirus-Status: Clean
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit