După cum am menționat în postările anterioare programarea orientată pe obiecte (POO) este o modalitate de a scrie programe în care totul este organizat în jurul unor obiecte. Fiecare obiect descrie caracteristici (cum este) și operații (ce poate face), iar aceste obiecte pot comunica și colabora între ele pentru a rezolva o problemă concretă.
Aceste
caracteristici și proprietăți sunt definite într-o clasă, adică clasa este un
șablon sau un prototip după care se creează obiectele. Ea definește ce proprietăți
(atribute, caracteristici, variabile, date, câmpuri) și ce acțiuni (metode,
funcționalitate) vor avea obiectele realizate în baza ei.
De
exemplu:
Să
presupunem că dorim să dezvoltăm un soft pentru gestionarea închirierii de
mașini. În cadrul acestui sistem, mașinile BMW de diferite culori – roșu, verde
și galben – reprezintă doar câteva dintre vehiculele concrete, reale, disponibile pentru
închiriere. De asemenea, persoane precum Ecaterina, Ion și Mihai sunt exemple
de clienți care pot închiria aceste mașini.
În soft, atât mașinile, cât și clienții sunt reprezentate ca obiecte. Structura generală a unei mașini este definită într-o clasă, de exemplu Mașină, iar structura unui client este definită într-o clasă separată, de exemplu Client. Fiecare mașină concretă (BMW roșu, verde sau galben) este un obiect creat pe baza clasei Mașină, iar fiecare persoană este un obiect creat pe baza clasei Client.
Important! Atunci când creăm de fapt un obiect în baza unei clase, corect spunem, instanțiem clasa.
Obiectele
de tip Client interacționează cu obiectele de tip Mașină, deoarece un client
poate închiria o mașină. Această interacțiune dintre obiecte ilustrează
principiul de bază al programării orientate pe obiecte, unde sistemul este
construit din obiecte care colaborează între ele.
Într-o programare mai avansată, atunci când dorim să creăm interfețe
grafice, cum este de exemplu fereastra ilustrată.
....surpriză....și
aici vom avea la fel de a face cu obiecte și clase. De exemplu ori de câte ori
apare necesitatea creării unui obiect de tip buton, cum este cel din fereastră Adauga
in lista sau Calculeaza bursa va fi necesar să instanțiem clasa JButton
care este prototipul unui buton. După creare, fiecărui obiect de tip JButton i
se atribuie caracteristici concrete, cum ar fi textul afișat, dimensiunea,
culoarea și acțiunea executată la apăsare.
În mod similar, pentru câmpurile de introducere a datelor
(Nume, Prenume, Media), este necesară instanțierea clasei JTextField.
Aceste obiecte permit introducerea și preluarea datelor de la utilizator.
Aceste obiecte cooperează între ele, butonul are nevoie de datele introduse în câmpurile de editare pentru a putea calcula bursa sau pentru a adăuga informațiile într-o listă.
Datele
din cutiile de editare ca să poată fi adăugate în listă este nevoie de un
obiect, de exemplu de tip Elev.
Clase
ca JButton sau JTextField sunt clase predefinite din pachetul Swing al limbajului Java, iar clasa
Elev este una definită de programator.
Este
necesar să menționăm că în limbajul Java, toate clasele fac parte dintr-o ierarhie de
clase, iar părintele tuturor claselor Java este clasa Object.
Mai jos este un exemplu de ierarhie de clase predefinite în
limbajul Java:
Nu ne oprim momentan la ele, dar vom reveni la termenul de ierarhie când vom studia principiul moștenirii. 😉
În
cele ce urmează vom studia cum să definim propriile clase în limbajul Java și
cum să le instanțiem.
Mai țineți minte care este sinonimul cuvântului a instanția? A crea o instanță (obiect) pentru o clasă.