Home » Articole » Articole » Calculatoare » Programare » Limbajul de programare Java pentru scrierea de programe grafice

Limbajul de programare Java pentru scrierea de programe grafice

postat în: Programare 0

Java este predat ca prim limbaj de programare în multe programe de informatică din colegii și licee. Este un limbaj vast și complex, cu caracteristici care îl fac potrivit pentru proiecte de programare mari și complexe. Aceste caracteristici îl pot face să pară puțin verbos și prea strict, dar permit și mediilor de programare să ofere un suport excelent pentru scrierea și depanarea programelor. Dacă intenționați să scrieți cod Java, ar trebui să luați în considerare utilizarea unui mediu de programare complet funcțional, cum ar fi Eclipse (http://eclipse.org/) sau Netbeans (https://netbeans.org/). Subsecțiunea 3.6.2 explică cum se configurează Eclipse pentru programare cu JOGL, API-ul Java pentru OpenGL.

Dacă doriți să învățați Java mai detaliat, puteți lua în considerare manualul online gratuit de Java, http://math.hws.edu/javanotes.

Structura de bază a limbajului

Java este orientată pe obiecte. Un program Java este alcătuit din clase, care pot conține definiții de variabile și definiții de metode. („Metodă” este termenul orientat pe obiecte pentru funcție sau subrutină.) O clasă este definită în propriul fișier, al cărui nume trebuie să corespundă cu numele clasei: Dacă clasa se numește „ClasaMea”, atunci numele fișierului trebuie să fie ClasaMea.java. Clasele pot apărea și drept clase imbricate în cadrul altor clase; O clasă imbricată, desigur, nu primește propriul fișier. Sintaxa de bază pentru definirea unei clase este

public class MyClass {
   .
   . // Variable, method, and nested class definitions.
   .
}

 

Există variații ale acestei sintaxe. De exemplu, pentru a defini o clasă ca subclasă a unei clase existente, trebuie să spuneți că noua clasă „extinde” clasa existentă:

public class MyClass extends ExistingClass { ...

O clasă în Java poate extinde o singură clasă. Cu toate acestea, pe lângă sau în loc să extindă o clasă, o clasă nouă poate implementa și una sau mai multe „interfețe”. O interfață în Java specifică anumite metode care trebuie definite într-o clasă care implementează interfața. Cu toate aceste opțiuni, o definiție de clasă ar putea arăta cam așa:

public class MyGUI extends JPanel implements KeyListener, MouseListener { ...

De fapt, o clasă exact ca aceasta ar putea fi utilizată într-un program GUI.

O clasă poate conține o metodă main(), iar una dintre clasele care alcătuiesc un program trebuie să conțină o astfel de metodă. Metoda main() este locul unde începe execuția programului. Are un parametru, de tip String[], care reprezintă o matrice de argumente din linia de comandă. Există o distincție confuză în Java între variabilele și metodele statice și nestatice, pe care o putem ignora în mare parte aici. Metoda main() este statică. Adesea, într-un program grafic, main este singurul lucru static, deci distincția nu va fi foarte importantă pentru noi. Într-un program GUI, metoda main creează de obicei doar o fereastră și o face vizibilă pe ecran; după aceea, fereastra se ocupă singură.

O definiție de metodă nestatică într-o clasă definește de fapt o metodă pentru fiecare obiect creat din acea clasă. În interiorul definiției metodei, variabila specială this poate fi utilizată pentru a se referi la obiectul din care face parte metoda. S-ar putea să fiți familiarizați cu aceeași variabilă specială în JavaScript. Cu toate acestea, spre deosebire de JavaScript, utilizarea lui this este opțională în Java, astfel încât o variabilă care face parte din același obiect poate fi denumită fie x, fie this.x, iar o metodă poate fi apelată ca doSomething() sau this.doSomething().

Variabilele, metodele și clasele imbricate pot fi marcate ca private, publice sau protejate. Lucrurile private pot fi utilizate numai în clasa în care sunt definite. Lucrurile publice pot fi accesate de oriunde. Lucrurile protejate pot fi accesate în aceeași clasă și în subclasele acelei clase.

Programele din această carte utilizează o clasă principală care definește fereastra unde va fi afișat graficul. Acea clasă conține și rutina main(). (Acesta nu este un stil deosebit de bun, dar funcționează bine pentru programe mici.) În unele cazuri, programul depinde de alte clase pe care le-am scris; fișierele pentru aceste clase ar trebui să fie în același folder ca și fișierul care definește clasa principală. Programele pot fi apoi compilate pe linia de comandă, lucrând în acel folder, cu comanda

javac *.java

Pentru a rula programul a cărui clasă principală este MyClass, utilizați

java MyClass

Totuși, programele care utilizează JOGL necesită câteva opțiuni suplimentare în aceste comenzi. Ceea ce trebuie să știți este explicat în Subsecțiunea 3.6.2. (Eclipse și Netbeans au propriile comenzi simple pentru rularea unui program.)

Există multe clase standard disponibile pentru utilizare în programe. Câteva dintre clasele standard, cum ar fi Math și System, sunt disponibile automat pentru orice program. Altele trebuie „importate” într-un fișier cu cod sursă înainte de a putea fi utilizate în acel fișier. O clasă poate face parte dintr-un pachet, care este o colecție de clase. De exemplu, clasa Graphics2D este definită în pachetul java.awt. Această clasă poate fi importată într-un fișier cu cod sursă adăugând linia

import java.awt.Graphics2D;

la începutul fișierului, înainte de definiția clasei. Alternativ, toate clasele din pachetul java.awt pot fi importate cu comanda

import java.awt.*;

Este posibil să vă puneți propriile clase în pachete, dar acest lucru adaugă unele complicații la compilarea și utilizarea lor. Programele exemplu din această carte nu sunt definite în pachete denumite. Oficial, se spune că se află în „pachetul implicit”.

Java este un limbaj puternic tipizat. Fiecare variabilă are un tip și poate conține doar valori de acel tip. Fiecare variabilă trebuie declarată, iar declarația specifică tipul variabilei. Declarația poate include o valoare inițială. De exemplu,

String name; // Declară name ca o variabilă a cărei valoare trebuie să fie un șir de caractere.
int x = 17; // x este o variabilă a cărei valoare trebuie să fie un număr întreg, cu valoarea inițială 17.
Graphics2D g; // g este o variabilă a cărei valoare este un obiect de tip Graphics2D.

Java are opt tipuri „primitive”, ale căror valori nu sunt obiecte: int, long, short, byte, double, float, char și boolean. Primele patru sunt tipuri întregi cu numere diferite de biți. Tipurile de numere reale sunt double și float. O constantă, cum ar fi 3.7, este de tip double. Pentru a obține o constantă de tip float, trebuie să adăugați un „F”: 3.7F. (Acest lucru apare la programarea în JOGL, unde unele metode necesită parametri de tip float.) Valorile constantelor char sunt incluse între ghilimele simple; de exemplu, ’A’ și ’%’. Ghilimelele duble sunt folosite pentru șiruri de caractere, care nu sunt valori primitive în Java.

Pe lângă cele opt tipuri primitive, orice clasă definește un tip. Dacă tipul unei variabile este o clasă, atunci valorile posibile ale variabilei sunt obiecte care aparțin acelei clase. O interfață definește, de asemenea, un tip, ale cărui valori posibile sunt obiecte care implementează interfața. Un obiect, spre deosebire de o valoare primitivă, conține variabile și metode. De exemplu, Point este o clasă. Un obiect de tip Point conține variabile int x și y. Un șir de caractere este un obiect și conține mai multe metode pentru lucrul cu șirul, inclusiv una numită length() care returnează lungimea sa și o alta numită charAt(i) care returnează al i-lea caracter din șir. Variabilele și metodele dintr-un obiect sunt întotdeauna accesate folosind operatorul punct „.”: Dacă pt este o variabilă de tip Point, referindu-se la un obiect de tip Point, atunci pt.x și pt.y sunt nume pentru variabilele de instanță din acel obiect. Dacă str este o variabilă de tip String, atunci str.length() și str.charAt(i) sunt metode din obiectul String la care se referă str.

O definiție de metodă specifică tipul de valoare returnată de metodă și un tip pentru fiecare dintre parametrii săi. De obicei, este marcată ca fiind publică sau privată. Iată un exemplu:

public int countChars( String str, char ch ) {
   int count = 0;
   for ( int i = 0; i < str.length(); i++) {
         if ( str.charAt(i) == ch )
             count++;
   }
   return count;
}

 

Aici, countChars este numele metodei. Aceasta primește doi parametri de tip String și char și returnează o valoare de tip int. Pentru o metodă care nu returnează o valoare, tipul returnat (int în exemplul de mai sus) este specificat ca void.

O metodă în Java poate fi utilizată în întreaga clasă în care este definită, chiar dacă definiția vine după punctul în care este utilizată. (Acest lucru este în contrast cu C, unde funcțiile trebuie declarate înainte de a fi utilizate, dar similar cu JavaScript.) Același lucru este valabil și pentru variabilele globale, care sunt declarate în afara oricărei metode. Tot codul de programare, cum ar fi instrucțiunile de atribuire și structurile de control, trebuie să se afle în interiorul definițiilor metodelor.

Java are același set de structuri de control de bază ca și C și JavaScript: instrucțiunile if, buclele while și do…while, pentru instrucțiunile loops și switch iau în esență aceeași formă în cele trei limbaje. Instrucțiunile de atribuire sunt, de asemenea, aceleași.

În mod similar, cele trei limbaje au aproape același set de operatori, inclusiv operatorii aritmetici de bază (+, −, * și /), operatorii de incrementare (++) și decrementare (–), operatorii logici (||, && și |), operatorul ternar (?:) și operatorii bit la bit (cum ar fi & și |). O particularitate a aritmeticii Java, ca în C, este că operatorul de împărțire, /, atunci când este aplicat operanzilor întregi, produce un rezultat întreg. Deci, 18/5 este 3 și 1/10 este 0.

Operatorul + poate fi utilizat pentru a concatena șiruri de caractere, astfel încât „Hello” + „World” să aibă valoarea „HelloWorld”. Dacă doar unul dintre operanzii lui + este un șir de caractere, atunci celălalt operand este convertit automat într-un șir de caractere.

Funcțiile standard din Java sunt definite în clase. De exemplu, funcțiile matematice includ Math.sin(x), Math.cos(x), Math.sqrt(x) și Math.pow(x,y) pentru ridicarea lui x la puterea y. Math.random() returnează un număr aleatoriu în intervalul 0,0 la 1,0, inclusiv 0,0, dar fără a include 1,0. Metoda System.out.println(str) afișează un șir de caractere în linia de comandă. În programele grafice, este utilă în principal pentru depanare. Pentru a afișa mai multe elemente, utilizați concatenarea șirurilor:

System.out.println("The values are x = " + x + " and y = " + y);

Există, de asemenea, o metodă de ieșire formatată, System.out.printf, care este similară cu funcția printf din C.

Sursa: David J. Eck, Introduction to Computer Graphics (Eck), LibreTexts, licența CC BY-NC-SA 4.0. Traducere și adaptare Nicolae Sfetcu

Ghidul autorului de cărţi electronice
Ghidul autorului de cărţi electronice

Descoperă cum să devii autor de succes în era digitală!

Nu a fost votat 22.92 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Căutarea, extragerea, organizarea și evaluarea informațiilor
Căutarea, extragerea, organizarea și evaluarea informațiilor

Transformă informația în putere cu ajutorul acestei cărți indispensabile!

Nu a fost votat Interval de prețuri: 18.33 lei până la 44.15 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Telelucru (Telework)
Telelucru (Telework)

Resursa ideală pentru profesioniști, angajatori și freelanceri care vor să navigheze eficient în era muncii la distanță.

Nu a fost votat 0.00 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.


Descoperă mai multe la MultiMedia

Abonează-te ca să primești ultimele articole prin email.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *