joi, 11 ianuarie 2024

Clase și obiecte. Concepte generale

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:

Excepţiile reprezintă mecanismul java folosit pentru tratarea erorilor ce  apar în timpul execuţiei programelor

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ă.

Succes!
❤️

miercuri, 10 ianuarie 2024

Exerciții practice. Controlul execuției. Tablouri unidimensionale


1. Calculul costului călătoriei 
Scrieți un program în Java care citește de la tastatură distanța parcursă în kilometri și calculează costul călătoriei. Programul va afișa atât tariful calculat, cât și costul final după eventuale reduceri. Regulile de stabilire a reducerii sunt următoarele:
  • Dacă distanța este mai mare de 30 km, costul pe km este 12 lei și se aplică o reducere de 10% din total.
  • Dacă distanța este între 15 și 30 km, costul pe km este 15 lei și fără reducere.
  • Dacă distanța este mai mică de 15 km, costul pe km este 20 lei și fără reducere.

2. Suma cifrelor și divizibilitatea cu 3
Scrieți un program în Java care citește de la tastatură un număr întreg, după care calculează suma cifrelor numărului folosind o buclă while. Programul va afișa care este suma cifrelor și dacă aceasta este un număr divizibil cu 3 sau nu.

Algoritm de urmat:


Exemplu:



3. Monitorizarea temperaturilor dintr-un laborator


O instituție monitorizează temperaturile dintr-un laborator pentru n camere. Scrieți un program în Java care:
  • citește de la tastatură numărul n și apoi cele n valori reale care reprezintă temperatura (°C) în fiecare cameră, stocate într-un vector;
  • determină temperatura medie a laboratorului;
  • găsește temperatura maximă înregistrată, constanta Double.NEGATIVE_INFINITY;
  • determină câte camere au temperaturi sub 18°C;
  • determină câte camere au temperaturi peste 25°C.
Date de ieșire:
  • pe prima linie: temperatura medie (număr real)
  • pe a doua linie: temperatura maximă (număr real)
  • pe a treia linie: numărul camerelor cu temperaturi sub 18°C (număr întreg)
  • pe a patra linie: numărul camerelor cu temperaturi peste 25°C (număr întreg)
4. Analiza notelor elevilor

Elaborați un program Java care va permite unui profesor să analizeze notele obținute de elevi la un test. Programul va permite citirea numărului de elevi (n) și nota (de la 1 la 10) fiecărui elev și le stochează în vector. Programul va calcula și:
  • afișa media generală a clasei;
  • afișa nota maximă și nota minimă, folosind Integer.MIN_VALUE și Integer.MAX_VALUE;
  • afișa numărul de elevi care au trecut testul (nota ≥ 5) și câți nu au susținut testul (nota < 5).
5. Dublarea elementelor impare

De la tastatură se introduce dimensiunea și elementele unui vector. Programul va afișa vectorul introdus, va înlocui elementele impare din vector cu dublul lor, după care va afișa vectorul modificat.

6. Media și elementele sub media aritmetică

De la tastatură se introduce dimensiunea unui vector și elementele acestuia. Programul va afișa vectorul introdus, va calcula media aritmetică a elementelor și va determina numărul de elemente mai mici decât media aritmetică, afișând rezultatele obținute.

7. Eliminarea unui număr din vector

De la tastatură se introduce dimensiunea unui vector și elementele acestuia, precum și un număr natural x. Programul va afișa vectorul introdus, va elimina toate aparițiile numărului x din vector, va afișa vectorul rezultat și noua sa lungime.

8. Verificarea elementelor pozitive

De la tastatură se introduce dimensiunea unui vector și elementele acestuia. Programul va afișa vectorul introdus, va verifica dacă toate elementele vectorului sunt numere pozitive și va afișa rezultatul verificării.

Succes!
❤️