Programarea abstractizării, lecții și exemple

Capitolul 2. Programarea orientată pe obiecte în Java

abstracție

Descriind comportamentul unui obiect, cum ar fi o mașină, construim modelul său. Modelul, ca regulă, nu poate descrie complet obiectul, obiectele reale sunt prea complexe. Este necesar să selectăm numai acele caracteristici ale obiectului care sunt importante pentru rezolvarea sarcinii stabilite în fața noastră. Pentru descrierea transportului de marfă, o caracteristică importantă va fi capacitatea de transport a unei mașini, iar pentru descrierea cursei de automobile nu este esențială. Dar pentru modelarea cursei este necesară descrierea unei metode de setare de viteză de către mașina dată, iar pentru transportul de mărfuri nu este atât de importantă.

Trebuie să rezumăm din anumite detalii specifice obiectului. Este foarte important să alegeți gradul corect de abstractizare. Un grad prea înalt va da doar o descriere aproximativă a obiectului, nu va permite să-și modeleze corect comportamentul. Un grad prea scăzut de abstractizare va face modelul foarte complex, supraîncărcat cu detalii și, prin urmare, necorespunzător.

De exemplu, puteți prezice cu precizie vremea pentru ziua de mâine într-un anumit loc, dar calculele pentru acest model vor dura trei zile chiar și pe cel mai puternic computer. De ce avem nevoie de un model care să întârzie două zile? Ei bine, precizia modelului folosit de meteorologii, toți știm pentru noi înșine. Dar calculele pentru acest model durează doar câteva ore.

Descrierea fiecărui model se face sub forma uneia sau mai multor clase. O clasă poate fi considerată un proiect, un instantaneu, un desen, după care vor fi create obiecte specifice. Clasa conține o descriere a variabilelor și constantelor care caracterizează obiectul. Se numesc câmpuri de clasă. Procedurile care descriu comportamentul unui obiect se numesc metode de clasă. În cadrul unei clase, puteți descrie atât clase imbricate, cât și interfețe imbricate. Câmpurile, metodele și clasele imbricate la primul nivel sunt membri ai clasei (membri de clasă). Diferitele școli de programare orientate pe obiecte oferă termeni diferiți, folosim terminologia adoptată în tehnologia Java.

Iată o schiță a descrierii mașinii:

int maxVelocity; // Câmpul care conține cea mai rapidă viteză a mașinii

viteza int; // Câmpul care conține viteza curentă a vehiculului

greutate int; Un câmp care conține greutatea mașinii

void moveTo (int x, int y)

// masina. Parametrii x și y nu sunt câmpuri

int a = 1; // Variabila locală nu este un câmp

// Corpul metodei. Aici este legea

// mutarea autovehiculului în punctul (x, y)

Nu există proceduri și funcții imbricate în Java, o altă metodă nu poate fi descrisă în corpul metodei.

După terminarea descrierii clasei, puteți crea obiecte concrete, instanțe ale clasei descrise. Crearea instanțelor se realizează în trei etape, similar cu descrierea matricelor. În primul rând, se menționează referiri la obiecte: numele clasei este scris și clasa este trecut printr-un spațiu sau, mai precis, referințe la ele.

Automobile Iada2110, fordScorpio, oka;

lada2110 = Automobile noi ();

fordScorpio = nou Automobile ();

oka = Automobile noi ();

În a treia etapă, obiectele sunt inițializate, valorile inițiale sunt setate. Această etapă, ca regulă, este combinată cu cea de-a doua, pentru acest scop noua denumire repetă numele clasei cu parantezele Automobile (). Acesta este așa-numitul constructor (clasă), dar vom vorbi despre el mai târziu.

Deoarece numele câmpurilor, metodelor și claselor imbricate sunt aceleași pentru toate obiectele, ele sunt specificate în descrierea clasei, ele trebuie specificate cu numele de referință al obiectului:

oka.maxVelocity = 350; // De ce nu?

Amintiți-vă că un șir de text din ghilimele este înțeles în Java ca un obiect al clasei String. Prin urmare, putem scrie

int strlen = "Acesta este un obiect String" .length ();

Obiectul șir execută metoda length (). una dintre metodele clasei sale de clasă. numărarea numărului de caractere dintr-un șir. Rezultatul este valoarea lui strlen. egală cu 24. O astfel de înregistrare ciudată apare în programele Java la fiecare pas.

În multe situații, mai multe modele sunt construite cu grade diferite de detaliu. De exemplu, pentru a proiecta o haină și o blană, este necesar un model mai puțin precis al contururilor corpului uman și a mișcărilor sale, iar pentru construirea unei haine de rochie sau rochie de seară este mult mai precisă. În acest caz, un model mai precis, cu un grad mai mic de abstractizare, va utiliza metodele deja disponibile pentru un model mai puțin precis.

Nu credeți că clasa Automobile este supraîncărcată? Într-adevăr, în lume au fost produse milioane de mașini de diferite mărci și tipuri. Ce au în comun, cu excepția celor patru roți? Da, iar roțile pot fi mai mult sau mai puțin. Este mai bine să scrieți clase separate pentru autoturisme și camioane, pentru mașini de curse și vehicule pentru toate tipurile de terenuri? Cum să organizați toate aceste cursuri? Programarea orientată pe obiecte răspunde la această întrebare în acest fel: este necesară organizarea unei ierarhii de clasă.

Articole similare