JavaScript-ში კლასებისა და ობიექტების შესავალი
ახლა ჩვენ დავიწყებთ OOP-ის შესწავლას JavaScript-ში. მოდით, განვიხილოთ სიცოცხლის მაგალითი, და შემდეგ გადავიტანოთ იგი JavaScript-ზე.
მაგალითად ავიღოთ მანქანა. მას აქვს ბორბლები, ფერი, კუპეს ტიპი, ძრავის მოცულობა და ა.შ. გარდა ამისა, მძღოლს შეუძლია მას ბრძანებები მისცეს: წასვლა, გაჩერება, მარჯვნივ შემობრუნება, მარცხნივ და ა.შ.
შეგვიძლია ვთქვათ, რომ არსებობს გარკვეული კლასი მანქანების, რომელსაც აქვს საერთო თვისებები (ყველას აქვს ბორბლები და ყველას შეუძლია ბრძანებების მიცემა).
კონკრეტული მანქანა, ქუჩაში დადგმული - ეს ამ კლასის წარმომადგენელია, ან, სხვა სიტყვებით, ობიექტი ამ კლასის. ყველა ამ კლასის ობიექტს აქვს თვისებები: ბორბლების რაოდენობა, ფერი, კუპეს ტიპი და მეთოდები: წასვლა, გაჩერება, მარჯვნივ შემობრუნება, მარცხნივ.
სხვა სიტყვებით, თავად კლასი - ეს არის ნახაზი, რომლის მიხედვითაც ქარხანაში ამზადებენ მანქანებს. ობიექტი კი - ეს თავად მანქანაა, რომელიც ამ ნახაზების მიხედვითაა გაკეთებული.
JavaScript-ში კლასი იქმნება საკვანძო
სიტყვის class მეშვეობით, რასაც მოსდევს ამ
კლასის სახელი. მოდით, გავაკეთოთ კლასი Car:
class Car {
// აქ არის კოდი, ანუ JavaScript-ნახაზი მანქანის
}
მოდით ახლა მივუთითოთ ჩვენს ნახაზში, რომ ნებისმიერ მანქანას, რომელიც ამ ნახაზის მიხედვით იქნება შექმნილი, ექნება თვისება ფერისთვის და თვისება საწვავის რაოდენობისთვის.
ამისთვის კლასის შიგნით დავწეროთ თვისება
color და თვისება fuel:
class Car {
color; // მანქანის ფერი
fuel; // საწვავის რაოდენობა
}
მოდით ახლა გავაკეთოთ ჩვენი კლასის მეთოდები.
JavaScript-ში მეთოდები ჩვეულებრივ ფუნქციებს ჰგავს,
მხოლოდ გამოცხადებულია საკვანძო სიტყვის function გარეშე.
როგორც ზემოთ იყო ნახსენები, ჩვენმა მანქანას შეუძლია წასვლა, შემობრუნება, გაჩერება. გავაკეთოთ შესაბამისი მეთოდები ჩვენს კლასში:
class Car {
color; // მანქანის ფერი
fuel; // საწვავის რაოდენობა
// ბრძანება წასვლა:
go() {
// რაღაც JavaScript კოდი
}
// ბრძანება შემობრუნება:
turn() {
// რაღაც JavaScript კოდი
}
// ბრძანება გაჩერება:
stop() {
// რაღაც JavaScript კოდი
}
}
ჩვენ გავაკეთეთ ჩვენი მანქანის ნახაზი. ახლა საჭიროა ქარხანაში წასვლა და ამ კლასის ობიექტის გაკეთება (ანუ კონკრეტული მანქანა).
JavaScript-ში ეს კეთდება საკვანძო სიტყვის
new მეშვეობით, რის შემდეგაც იწერება კლასის სახელი:
new Car; // ვბრძანებთ ქარხანას გააკეთოს მანქანა
თუმცა, თუ უბრალოდ შევქმნით კლასის ობიექტს - ეს არაფერში გამოვა (ეს იგივეა, რომ, მაგალითად, გამოვაცხადოთ მასივი და არსად ჩავწეროთ იგი). ჩვენ გვჭირდება ცვლადი ამ ობიექტის შესანახად.
ეს ცვლადი დაერქვას myCar
- ჩავწეროთ მასში ჩვენს მიერ შექმნილი ობიექტი:
let myCar = new Car;
მანქანის შექმნის შემდეგ შესაძლებელია მისი თვისებების მითითება. მათთან მიმართება ხდება წერტილის მეშვეობით. მოდით დავაყენოთ ჩვენი ობიექტის თვისებები:
let myCar = new Car; // ვბრძანებთ ქარხანას გააკეთოს მანქანა
myCar.color = 'red'; // ვაფერებთ წითელ ფერში
myCar.fuel = 50; // ვავსებთ საწვავს
ყველაფერი, ჩვენი მანქანა შექმნილია, გაფერებული და საწვავით filled. ახლა ჩვენ შეგვიძლია მას ბრძანებები მივცეთ ამ მანქანის მეთოდების მეშვეობით.
მეთოდებთან მიმართებაც ხდება წერტილის მეშვეობით, მაგრამ, თვისებისგან განსხვავებით, მეთოდის სახელის შემდეგ იწერება მრგვალი ფრჩხილები. მოდით, ჩვენი ობიექტი ბრძანებები მივცეთ:
myCar.go();
myCar.turn();
myCar.stop();