Java мен Pascal-да класстар айырмашылығы.
Класс паскальде тип түрінде анықталады. Сондықтан класс type бөлігінде жазылады.
Мысалы,
Pascal-де:
interface
type
TMyClass = class
id: Integer;
name: String;
constructor Create(pId: Integer; pName: String);
function GetId: Integer;
function GetName: String;
procedure SetName(s: String);
end;
implementation
constructor TMyClass.Create(pId: Integer; pName: String);
begin
id := pId;
name := pName;
end;
function TMyClass.GetId: Integer;
begin
Result := id;
end;
function TMyClass.GetName: String;
begin
Result := name;
end;
procedure TMyClass,SetName(s: String);
begin
name := s;
end;
Java-да:
class MyClass {
int id;
String name;
public MyClass(int id, String name) {
this.id = id;
this.name = name;
}
public int getId {
return id;
}
public String getName {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Бұл жерде көріп тұрғандай, Java-да методтардың барлығы класс денесінің ішінде анықталады. Ал, Pascal-да методтар класс денесінің сыртында жүзеге асырылады. Java-да конструкторлардың атауы класстың атауына сәйкес болады. Pascal-да ондай шектеу жоқ - constructor кілттік сөзінен кейін кез-келген атау жаза беруге болады.
Pascal класстары негізге программада да(program), модульдарда да(unit) орналасуы мүмкін. Java-да класстар негізгі класс денесінде немесе жеке файлдарда орналаса алады.
Pascal-да класс методына жатпайтын қарапайым процедуралар мен функциялар бола алады. Яғни, оларды жазу үшін ешқандай класс жасаудың қажеті жоқ. Олар кез-келген модульде жасалып басқа кез-келген модульден шақырылуы мүмкін.
unit UnitA;
interface
type
TClassA = class
....
....
end;
procedure WriteHello;
implementation
procedure WriteHello;
begin
writeln('Hello, World');
end;
end.
Java-да процедура, функция ұғымы жоқ. тек класстар методы деген ұғым бар. Класс методтары класс сыртында, классыз өмір сүре алмайды. Әлдебір класстың методын класс экземплярын жасамай шақыру үшін ол метод статикалық метод болып анықталуы тиіс.
class MyClass {
public static void writeHello() {
System.out.println("Hello, World");
}
}
Осы сияқты Pascal модульдерінде классқа кірмейтін айнымалылар анықтауға болады. Оларды басқа модульдерден оқуға, жазуға болады. (егер модульдің interface бөлігінде орналасса). Ал, Java-да тек класс мүшелерін(қасиеттері,өрістері) ғана қолдануға болады. Егер, класстың экземплярын жасамай тұрып мүшеге мән жазу керек болса, онда ол мүшені статикалық мүше етіп жариялау қажет.
class MyClass {
public static A;
}
Ал, Pascal-да класс, объект ұғымы негізгі процедуралық программалауға қосымша мүмкіндік болып табылады. Pascal-да бірде-бір класс жасамай-ақ жұмыс істейтін программа жазуға болады. Java-да классыз ешқандай программа жасау мүмкін емес!
Комментариев нет:
Отправить комментарий