🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi
3 messages
3 total messages Started by J-23 Fri, 09 Feb 2018 01:29
Referencja klasy - Delphi
#346319
Author: J-23
Date: Fri, 09 Feb 2018 01:29
35 lines
2055 bytes
Witam

Nic się na grupie za specjalnie nie dzieje a mi potrzeba odświeżyć 
pamięć. Bo teraz mało 'skrobie' Delphi/Lazarusie

mamy  klasę SkinManager

type
TSkinManager = class;


type
TSkinManagerClass = of TSkinManager  - referencje do klasy


mamy klasę Skins

type
TSkins = class(TComponent) - leży na każdej formie



I właśnie o referencje mi chodzi, czy dobrze rozumiem, każdy Nowy obiekt 
  utworzony z klasy TSkins posiada dostęp do referencji TSkinManagerClass
i teraz załóżmy że w TSkinManager posiadam metode do zmiany skórki i 
wedłg tego co ja myśle wywołując tę metodę zmienią się skóry na 
wszystkich formatkach.

A skoro tak - o ile nie jest błędne moje myślenie to wytłumaczcie mi 
czym ta konstrukcja różni się od Interfejsu bo normalnie to do tego 
zadania właśnie użył bym interfejsu, który by zdał 100% egzamin czy ta 
konstrukcja ma za zadanie właśnie wyeliminować użycie interfejsu? Czy 
może ma jeszcze jakieś właściwości?

Pozdrawiam
Re: Referencja klasy - Delphi
#346320
Author: Roman Tyczka
Date: Fri, 09 Feb 2018 08:54
53 lines
2810 bytes
On Fri, 9 Feb 2018 02:29:59 +0100, J-23 wrote:

> Nic się na grupie za specjalnie nie dzieje a mi potrzeba odświeżyć 
> pamięć. Bo teraz mało 'skrobie' Delphi/Lazarusie
> 
> mamy  klasę SkinManager
> 
> type
> TSkinManager = class;
> 
> 
> type
> TSkinManagerClass = of TSkinManager  - referencje do klasy


Jeśli już to

TSkinManagerClass = class of TSkinManager;
 
> mamy klasę Skins
> 
> type
> TSkins = class(TComponent) - leży na każdej formie
> 
> I właśnie o referencje mi chodzi, czy dobrze rozumiem, każdy Nowy obiekt 
>   utworzony z klasy TSkins posiada dostęp do referencji TSkinManagerClass
> i teraz załóżmy że w TSkinManager posiadam metode do zmiany skórki i 
> wedłg tego co ja myśle wywołując tę metodę zmienią się skóry na 
> wszystkich formatkach.

Ja nie bardzo rozumiem co kombinujesz. W każdym razie nie ma żadnego
związku pomiędzy klasami TSkinManager i TSkins (przynajmniej w tym kodzie
jaki tu wkleiłeś). A to czy każdy obiekt TSkins posiada dostęp do typu
klasowego TSkinManagerClass zależy od tego czy ten typ będzie publiczny i
widoczny (w zasięgu obiektu powstałego z klasy TSkins). Ponadto fakt, że
TSkinManagerClass to typ klasowy od typu TSkinManager nie powoduje w żaden
magiczny sposób, że zmiana skórki w jednej klasie rozpropaguje się po
wszystkich. Bo niby jakim cudem?
Tak naprawdę typ klasowy pozwala jedynie przechowywać typ klasy (lub klas
potomnych) i np. z niego tworzyć instancje, różne, w zależności od
przypisanego typu właściwego.
 
> A skoro tak - o ile nie jest błędne moje myślenie to wytłumaczcie mi 
> czym ta konstrukcja różni się od Interfejsu bo normalnie to do tego 
> zadania właśnie użył bym interfejsu, który by zdał 100% egzamin czy ta 
> konstrukcja ma za zadanie właśnie wyeliminować użycie interfejsu? Czy 
> może ma jeszcze jakieś właściwości?

A już co z tym ma wspólnego interfejs to kompletnie nie wiem.

-- 
pozdrawiam
Roman Tyczka
Re: Referencja klasy - Delphi
#346321
Author: J-23
Date: Fri, 09 Feb 2018 10:39
59 lines
3193 bytes
W dniu 09.02.2018 o 09:54, Roman Tyczka pisze:
> On Fri, 9 Feb 2018 02:29:59 +0100, J-23 wrote:
> 
>> Nic się na grupie za specjalnie nie dzieje a mi potrzeba odświeżyć
>> pamięć. Bo teraz mało 'skrobie' Delphi/Lazarusie
>>
>> mamy  klasę SkinManager
>>
>> type
>> TSkinManager = class;
>>
>>
>> type
>> TSkinManagerClass = of TSkinManager  - referencje do klasy
> 
> 
> Jeśli już to
> 
> TSkinManagerClass = class of TSkinManager;


Tak masz rację o to mi chodziło

>   
>> mamy klasę Skins
>>
>> type
>> TSkins = class(TComponent) - leży na każdej formie
>>
>> I właśnie o referencje mi chodzi, czy dobrze rozumiem, każdy Nowy obiekt
>>    utworzony z klasy TSkins posiada dostęp do referencji TSkinManagerClass
>> i teraz załóżmy że w TSkinManager posiadam metode do zmiany skórki i
>> wedłg tego co ja myśle wywołując tę metodę zmienią się skóry na
>> wszystkich formatkach.
> 
> Ja nie bardzo rozumiem co kombinujesz. W każdym razie nie ma żadnego
> związku pomiędzy klasami TSkinManager i TSkins (przynajmniej w tym kodzie
> jaki tu wkleiłeś). A to czy każdy obiekt TSkins posiada dostęp do typu
> klasowego TSkinManagerClass zależy od tego czy ten typ będzie publiczny i
> widoczny (w zasięgu obiektu powstałego z klasy TSkins). Ponadto fakt, że
> TSkinManagerClass to typ klasowy od typu TSkinManager nie powoduje w żaden
> magiczny sposób, że zmiana skórki w jednej klasie rozpropaguje się po
> wszystkich. Bo niby jakim cudem?
> Tak naprawdę typ klasowy pozwala jedynie przechowywać typ klasy (lub klas
> potomnych) i np. z niego tworzyć instancje, różne, w zależności od
> przypisanego typu właściwego.
>   
>> A skoro tak - o ile nie jest błędne moje myślenie to wytłumaczcie mi
>> czym ta konstrukcja różni się od Interfejsu bo normalnie to do tego
>> zadania właśnie użył bym interfejsu, który by zdał 100% egzamin czy ta
>> konstrukcja ma za zadanie właśnie wyeliminować użycie interfejsu? Czy
>> może ma jeszcze jakieś właściwości?
> 
> A już co z tym ma wspólnego interfejs to kompletnie nie wiem.
> 

Fakt pomieszałem ale już rozumiem. Dzięki za informacje

Pozdrawiam
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads