Definirea notiuni de Clasa (class) in Java

Notiunea de clasa este similara cu notiunea de tip de date.

Atributele impreuna cu metodele definite intr-o clasa constituie membrii clasei.

Crearea unui obiect se numeste instantierea unei  clase.

Notiunea de obiect nu poate exista fara aceea clasa si invers.

Dupa declaratia unei clase urmeaza definirea corpului ei, definire ce se face in cadrul unui bloc delimitat de acolade.

Corpul unei clase contine o serie de declaratii de membrii ai clasei si constructori.

Membrii unei clase sunt atributele si metodele.

Constructorii unei clase reprezinta o categorie aparte de functii utilizate la initializarea unui obiect.

Se obisnuieste ca atributele sa fie declarate inaintea metodelor.

Un membru fie ca este atribut sau metoda, declarat intr-o clasa este disponibil prin identificatorul lui, oriunde in interiorul clasei.

Caracterizare pachetul JDK

La baza dezvoltarii unui program Java sta mediul de dezvoltare pus la dispozitie de firma Sun. Acesta este Java Developer Kit (JDK) si trebuie considerat ca mediu de referinta în programarea Java. Acest kit a evoluat, începând ce versiunea JDK 1.0 si apoi JDK 1.1, JDK 1.2, pâna la versiunea JDK 1.3, actualmente aparând versiunea beta pentru 1.4.

Mediul JDK contine pe de-o parte o serie de biblioteci de clase Java necesare scrierii unui program si pe de alta parte un set de utilitare necesare compilarii, testarii, executiei si documentarii unei aplicatii Java.

Un fisier cu extensia  *.class, reprezinta unitatea fundamentala a unui program executabil Java. O biblioteca de clase cuprinde o serie de clase ce au un numitor comun. O astfel de biblioteca este cunoscuta în Java sub numele de package.  JDK-ul include câteva package-uri fundamentale, care contin clase fara de care nu se pot dezvolta aplicatii Java performante. Package-urile Java incluse în JDK, formeaza principalul API- Application Programming Interface numit si Java Core. Orice alt mediu care poate executa aplicatii Java diferit de mediul JDK trebuie sa includa acest API. Pe lânga aceste pachete fundamentale grupate în Java Core utilizatorul poate folosi si altele dezvoltate de catre utilizatori. Trebuie însa sa se asigure ca aceste pachete aditionale, sunt disponibile si pe platforma pe care aplicatia se executa, nu numai unde aceasta a fost creata.

Securitatea aplicatiilor Client-Server

Pe internet exista persoane rau intentionate care cauta si asteapta orice posibilitate de a crea o bresa in sistemul de securitate prin care sa poata intra în sistemul de calcul.
Pentru a avea un sistem de securitate eficient , trebuie sa tinem cont de urmatoarele probleme:
1) probleme legate de securitatea interna
In cazul problemelor legate de securitatea interna pot fi amintite infractiunile comise de catre angajati (persoanele din interior) organizatiei, entitati etc. în cauza . Aici exista 2 posibilitati:
a) Când o persoana  care are acces direct la informatie, vine si copiaza informatii, fisiere etc. pe un dispozitiv de stocare extern;
b) Când o persoana  instaleaza programe cu un motiv anume sau în necunostiinta de cauza, pe orice  sistem de calcul în afara de server cu scopul de a înregistra doar informatiile importante cum ar fi adrese de email, parole etc. .
Din categoria aceasta  fac parte urmatoarele programe:
Keylogger-le- sunt niste aplicatii care folosesc mecanisme de filtrare pentru a înregistra doar informatiile cum ar fi : adresele de email, parole etc.;
Botnets- este o aplicatie de tip malware care se instaleaza pe un sistem de calcul( bot) si sunt controlate de la distanta  cu ajutorul   unui sistem de calcul numit botmaster.
Virusii-  sunt aplicatii inserate în programe, care se multiplica singure în alte programe din spatiul rezident de memorie sau de pe discuri, care apoi blocheaza sistemul sau distrug informatia.
Calul troian- este o aplicatie care se afla in codul unui program normal. Face acelasi lucru ca si  programul normal, doar ca aditional, el aduna informatii despre numele, parola pe care le tasteaza utilizatorul la autentificare.
Viermele de retea- este un cod care este inchis într-o aplicatie care este activata de un eveniment predefinit. Pe lânga faptul ca se afla într-o aplicatie, acesta îsi schimba permanent locatia fiind dificil de localizat.
2) probleme legate de securitatea externa
Problemele legate de securitate externa se refera la faptul ca exista persoane neautorizate care încearca sa patrunda de la distanta într-un sistem de calcul( sau server).
In cazul de fata aceasta persoana nu detine nici un control asupra sistemului de calcul (sau server).
Pentru a avea acces la sistemul de calcul, persoana neautorizata trebuie sa parcurga urmatorii pasii:
1) trebuie sa obtina informatii despre administratorul de retea, echipamentele de retea pe care le foloseste administratorul de retea la momentul respectiv,  sistemele de operare care sunt instalate pe sistemele de calcul respectiv pe server, punctele vulnerabile pe care le are reteaua, topologia retelei etc. .
2)  creeaza o clona pe care testeaza atacul pentru a vedea cum ar reactiona serverul sau sistemul de calcul vizat.
3) Pentru avea succes, atacul trebuie sa dureze cât mai putin si sa fie efectuat în intervalele când serverul sau sistemul de calcul este vulnerabil.
În legatura cu cele prezentate mai sus, în practica sunt întâlnite urmatoarele tipuri de actiuni:
a) Phising-ul- descrie un proces de manipulare care are drept scop înselarea clientilor unei organizatii, institutii, în asa fel încât  acestea sa dezvaluie informatii confidentiale precum parole, date personale etc.;
b) DoS(Denial of Service)- implica încercarea de a întrerupe operatiile pe care le executa un sistem de calcul sau o retea care este conectata la internet;
c) Flooding – reprezinta tentativa de întrerupere sau de încarcare excesiva a traficului din retea prin transmiterea unui numar foarte mare catre unul sau mai multe noduri din retea;
Având în vedere cele descrise mai sus, apare evidenta necesitatea pentru  orice organizatie, entitate etc. care utilizeaza  modelul client-server(conectat sau nu la internet) sa îsi  stabileasca o politica interna de securitate pentru a controla accesul persoanelor neautorizate la anumite subretele si pentru a proteja informatiile cu caracter confidential.

Motivarea alegerii platformei ARDUINO

Dupa o larga documentare asupra unor sisteme de automatizare si control echivalente (unele dintre ele deja prezentate anterior) optiunea aleasa pentru proiectul lucrarii a fost Arduino.
Datorita faptului ca variantele proprietare ieseau din ecuatie, atât pentru ca erau deja
programate cu un software la nucleul caruia nu puteam avea acces, cât si datorita lipsei documentatie hardware care statea în spatele lor, alegerea a trebuit facuta între platformele Open Source.
Datorita faptului ca pe piata din România sunt foarte bine reprezentate aceste doua placi de dezvoltare, Arduino si Raspbery PI, iar lantul de distributie al placilor precum si senzorii compatibili este extrem de bine pus la punct, alegerea a trebuit facuta între aceste doua candidate.
Criteriile de selectie dintre cele doua platforme mentionate au fost bazate pe doua
elemente de baza:

  • Hardware
  • Software

În cazul Hardware-ului au contat urmatoarele elemente (dimensiune fizica, conectivitate cu senzori si elemente de actionare, scalabilitate, stabilitate, sursa de alimentare cu energie electrica).
În cazul Software-ului, important a fost limbajul de programare folosit si versatilitatea
acestuia în sensul de a permite accesarea a cât mai multe dintre functiile procesorului, existenta bibliotecilor aferente pentru a permite conectarea cu elementele hardware pe care le avem la dispozitie.
Un alt aspect important luat în considerare, care a jucat un rol major în alegerea facuta, a fost si pretul platformei, care trebuia sa fie unul accesibil si sa se preteze pentru exemplificarea practica.

Istorie Arduino

In anul 2005 a fost initiat un proiect pentru a crea un sistem simplu si ieftin care sa  asigure studentilor posibilitatea sa creeze si sa dezvolte proiecte interdisciplinare pentru controlul si interactionarea cu diversi stimuli din mediu.
Cei care au initiat acest proiect au fost Massimo Banzi si David Cuartielles. Acest proiect a fost botezat dupa numele unui rege Arduin al unei regiuni importante situate la granita de Nord Vest a Italiei ce si avea capitala in orasul Ivrea in anii 990 D.C.
Aceasta decizie a fost bazata pe faptul ca initial s-a inceput producerea acestor placi intr-o mica fabrica situata in orasul Ivrea, situat in regiunea Piedmont din Italia de azi.
Acest proiect a plecat de la un proiect anterior numit Wiring, dezvoltat de catre Hernando Barragan in cadrul lucrarii de licentaƒ sustinuta la Interaction Design Institute Ivrea.
Limbajul de programare folosit este similar cu C++, cu anumite mici modificari si cateodata simplificari ale acestuia. Mediul de dezvoltare "IDE" (Integrated Development Environment) este bazat pe un alt mediu de dezvoltare numit Processing , care este tot de tipul Open Source si este destinat accesului mai facil la un mediu de programare intuitiv pentru categorii de utilizatori, care nu sunt familiarizate cu limbaje de programare avansate, cum ar fi artistii, designerii, etc.
Proiectul acestui IDE a fost initiat de catre Casey Reas si Benjamin Fry in anul 2001, care, anterior, activasera in cadrul grupului de studiu "Estetica si Calculatoare" din cadrul universitatii americane MIT Media Lab.