static promenlivi v Object pascal?

6 отговора 187 прегледа
#1

static promenlivi v Object pascal?

В C++ ако член променлива на даден клас се обяви като static, после всички обекти на този клас се обръщат към един и същ адрес на паметта по отношение на тази променлива. Може ли в Обектен Паскал да се постигне същия ефект?

Отговор
в отговор на z_free #2

Re: static promenlivi v Object pascal?

Да, може да се имитира, като се дефинира променлива в unit-а, към която да се обръщат обектите.

Искам само да отбележа, че дефинирането на статични член-променливи противоречи на принципите на обектното програмиране. Така че може би е по-добре да преразгледаш проекта си. Както казваше преподавателя ни по ОО-програмиране, "ако опрете до множествено наследяване и статични член-променливи, значи имате грешка в проекта"...


Отговор
в отговор на Mandor #3

Re: static promenlivi v Object pascal?

I kak sha naprawish inache broqch na instance-te? A towa ponefgash se nalaga... predpolagam za twa pita choweka a ti mu iznasesh lekciq po teoriq na programiraneto

------------------------------
I got a COMPILER, and I'm not afraid to use it!
Отговор
в отговор на SDR #4

Re: static promenlivi v Object pascal?

Броенето на инстанциите не е работа на класа, а на някакъв менажер за управление на класа. По аналогия на фабриките в COM-обектите.

А относно лекциите - щом някой има желание да преоткрива колелото - моля, негова си работа. Но нали този форум е за това - да се обменя опит. А който има уши, да слуша.

Отговор
в отговор на Mandor #5

Re: static promenlivi v Object pascal?



Отговор
в отговор на z_free #6

Типизирана константа

Hi,
понякога наистина се налага обща статична променлива. Само че не е в класа, а в unit или във фунцията, която ще я използва

const
VariableName: TypeName = Initial Value;

Дали завиването на крушка е софтуерен проблем?
Отговор
в отговор на Eventer #7

По-добре...

var 

VariableName: TypeName = Initial Value;


С const също става, обаче това е остатък от стария Pascal.

Отговор