შესვლა

პროგრამირების საფუძვლები › დამწყები › ობიექტები

რეალური საგნის აღწერა მონაცემებით

საშუალო⏱ 8 წთ+20 XP👑 Pro#ობიექტები#მოდელირება#მონაცემთა სტრუქტურა

რას ისწავლი

  • როგორ გადააქციო ნამდვილი საგანი ობიექტად
  • როგორ აირჩიო თითოეული თვისების ტიპი
  • როგორ ჩადგა მასივი ობიექტში და ობიექტი ობიექტში

ჯერ მონაცემები, მერე კოდი

გამოცდილი პროგრამისტები ახალ პროგრამას ხშირად კოდით კი არა, კითხვით იწყებენ: „რა მონაცემები მაქვს და როგორ შევინახო ისინი?“. თუ მონაცემები კარგად არის მოწყობილი, კოდი თითქმის თავისით იწერება. თუ ცუდად, ყოველი ახალი ფუნქცია ბრძოლად იქცევა.

ნამდვილი საგნის მონაცემებად აღწერას მოდელირება (modelling) ჰქვია. მოდელი ყოველთვის გამარტივებაა: საგნის ყველა დეტალს კი არ ინახავ, არამედ მხოლოდ იმას, რაც შენს პროგრამას სჭირდება.

ნაბიჯი 1: რა ვიცით საგანზე

ვთქვათ, ბიბლიოთეკისთვის პროგრამას წერ და წიგნი უნდა აღწერო. ჩამოწერე ყველაფერი, რაც პროგრამას სჭირდება: სათაური, ავტორი, გამოცემის წელი, ხელმისაწვდომია თუ გატანილი, ჟანრები. ყდის ფერი? ბიბლიოთეკის პროგრამას, სავარაუდოდ, არ სჭირდება, ამიტომ მოდელში არ ჩავწერთ.

ნაბიჯი 2: სწორი ტიპი თითოეულს

ყოველ თვისებას ის ტიპი მიეცი, რომელიც მის შინაარსს შეესაბამება:

  • ტექსტი სახელებისთვის და აღწერებისთვის: title, author.
  • რიცხვი იმისთვის, რასაც ითვლი ან ადარებ: year. წელი ტექსტად რომ შეინახო, "2015" < "999" true იქნებოდა.
  • ლოგიკური კი/არა კითხვებისთვის: isAvailable. სახელი is-ით დაიწყე, რომ კითხვასავით წაიკითხებოდეს.
  • მასივი იმისთვის, რაც შეიძლება ერთზე მეტი იყოს: genres.
JavaScript
let book = {
  title: "ვეფხისტყაოსანი",
  author: "შოთა რუსთაველი",
  year: 1712,
  isAvailable: true,
  genres: ["პოემა", "კლასიკა"]
};

console.log(book.genres[0]);       // პოემა
console.log(book.genres.length);   // 2

book.genres[0] მარცხნიდან იკითხება: წიგნის ჟანრები, პირველი. 1712 აქ წიგნის პირველი ნაბეჭდი გამოცემის წელია.

ნაბიჯი 3: ობიექტი ობიექტში

ზოგი თვისება თვითონ რამდენიმე ნაწილისგან შედგება. ავტორს, მაგალითად, შეიძლება ჰქონდეს სახელი და დაბადების წელი. ასეთ დროს თვისების მნიშვნელობა ობიექტი ხდება:

JavaScript
let book = {
  title: "დათა თუთაშხია",
  author: {
    name: "ჭაბუა ამირეჯიბი",
    born: 1921
  },
  isAvailable: false
};

console.log(book.author.name);   // ჭაბუა ამირეჯიბი

წერტილები ჯაჭვად იკითხება: წიგნის ავტორის სახელი. ასეთ სტრუქტურას ჩადგმული (nested) მონაცემები ჰქვია. ნუ ჩადგამ ზედმეტად ღრმად: ორი-სამი დონე ჩვეულებრივ საკმარისია.

ნაბიჯი 4: ერთი ფორმა ყველასთვის

როცა საგანი ბევრია, მაგალითად ბიბლიოთეკის ყველა წიგნი, ყველა ობიექტს ერთი და იგივე თვისებები უნდა ჰქონდეს. ასე ერთი ციკლი და ერთი ფუნქცია ყველა წიგნზე იმუშავებს:

JavaScript
let library = [
  { title: "ვეფხისტყაოსანი", year: 1712, isAvailable: true },
  { title: "დათა თუთაშხია", year: 1975, isAvailable: false }
];

for (const b of library) {
  console.log(`${b.title} (${b.year}) — ${b.isAvailable ? "თაროზეა" : "გატანილია"}`);
}

სცადე თავად

გაუშვი, მერე დაამატე ბიბლიოთეკაში მესამე წიგნი იმავე ფორმით და დაბეჭდე, რამდენი წიგნია თაროზე.

JavaScript · სცადე თავად

ხშირი შეცდომები

  • ყველაფერი ტექსტად. year: "1975" და isAvailable: "კი" მერე გამოთვლებს და შედარებებს აფუჭებს. რიცხვი რიცხვად, კი/არა ლოგიკურად.
  • ერთზე მეტი რამ ერთ ტექსტში. genres: "პოემა, კლასიკა" ძნელი დასამუშავებელია. რაც შეიძლება ბევრი იყოს, მასივში შეინახე.
  • ზედმეტი დეტალი. მოდელში ჩაწერე მხოლოდ ის, რაც პროგრამას სჭირდება. ყოველი ზედმეტი თვისება შესავსები და შესამოწმებელია.

სავარჯიშო

აღწერე შინაური ცხოველი ობიექტით pet: სახელი, სახეობა, ასაკი (რიცხვი), აცრილია თუ არა (ლოგიკური) და სათამაშოების სია (მასივი, სულ მცირე ორი). დაბეჭდე წინადადება: ფისო არის კატა, 3 წლის, 2 სათამაშო აქვს.

JavaScript · სცადე თავად
💡 მინიშნება

სათამაშოების რაოდენობა: pet.toys.length. წინადადება შაბლონური სტრიქონით ააწყე.

✅ ამოხსნის ნახვა
JavaScript
let pet = {
  name: "ფისო",
  species: "კატა",
  age: 3,
  isVaccinated: true,
  toys: ["ბურთი", "თაგვი"]
};

console.log(`${pet.name} არის ${pet.species}, ${pet.age} წლის, ${pet.toys.length} სათამაშო აქვს.`);

მინი-ქვიზი

1რომელი ტიპი ჯობს თვისებას year (გამოცემის წელი)?

2let b = { author: { name: "ილია", born: 1837 } }; რას დაბეჭდავს console.log(b.author.born);?

3რა არის მოდელირება?

შეჯამება

  • პროგრამა მონაცემების დაგეგმვით დაიწყე: რა უნდა შეინახო და რა ფორმით.
  • ტექსტი სახელებისთვის, რიცხვი გამოთვლებისთვის, ლოგიკური კი/არა კითხვებისთვის, მასივი სიებისთვის.
  • რთული თვისება შეიძლება ობიექტი იყოს: book.author.name.
  • ერთი სახის ყველა ობიექტს ერთნაირი თვისებები უნდა ჰქონდეს.
📝 ჩემი შენიშვნა