Programare Orientată pe Obiecte - Introducere PDF

Summary

Aceste note de curs prezintă o introducere în programarea orientată pe obiecte (POO), explorând concepte precum obiecte, clase, atribute și metode. Sunt discutate și stiluri precum programarea structurată, programarea funcțională, si diverse funcții din C#.

Full Transcript

Programare Orientată pe Obiecte Introducere S. L. Dr. Ing. Daniel Iercan Curs (3 ore pe săptămână – S11) Examen - Quiz (CV) in sesiune Participare la teste fulger – Menti 7 teste cu 50% punctaj (0.5 punct bonus)...

Programare Orientată pe Obiecte Introducere S. L. Dr. Ing. Daniel Iercan Curs (3 ore pe săptămână – S11) Examen - Quiz (CV) in sesiune Participare la teste fulger – Menti 7 teste cu 50% punctaj (0.5 punct bonus) 10 teste cu 50% punctaj (1 puncte bonus) Notare Laborator & Proiect Max 2 absențe (S1-S10) Laborator S1-S10, proiect S11 – S13 (predare in S14) NA = ROUND((NL + NP) / 2) NF = ROUND((NE + NA) / 2) Competențe Înțelegerea conceptelor POO Modelarea realității folosind concepte din POO Obiective Proiectarea de programe OO extensibile și ușor de întreținut Folosirea limbajului OO C# (laborator) Bibliografie Weisfeld, Matt. Object-Oriented Thought Process, The (Developer's Library). Pearson Education Recapitulare Stiluri de programare Programare nestructurată (cod mașină, asamblare, Basic, Fortran) controlul fluxului de execuție prin GOTO / JUMP Programare structurata / procedurală – folosirea structurilor pentru controlul fluxului de execuție, descompunerea programelor în subrutine și blocuri Programare Orientată pe Obiecte – folosirea modulelor care combină date și comportament Programare Funcțională –modularizarea se face prin funcții, programele sunt create prin aplicarea și compunerea funcțiilor, starea este imutabilă, baza teoretica este calculul lambda Prompt engineering – generarea de programe / fragmente de cod prin intermediul unui agent AI, folosind direct limbajul natural Demo – GitHub Copilot Generare funcție Fibonacci (C#, C++, Java) Generare aplicație TODO list (WPF, ASP.NET Core) Generare cod pentru un anumit domeniu Adăugare reguli de validare Care este rolul nostru? Mai mult timp pe partea de proiectare și înțelegere a domeniului Humans are elevated Garry Kasparov – UPT Tech Talks, Mai 2024 Menti - Quiz Care sunt elemente ce permit controlul fluxului de execuție în cazul programării structurate? De ce avem nevoie de subrutine și blocurilor? Structuri de control https://en.wikipedia.org/wiki/Structured_programming Subrutine și blocuri Subrutină Referirea unei secvențe de instrucțiuni printr-o singură instrucțiune Bloc Tratarea unui grup de instrucțiuni ca fiind o singură instrucțiune (BEGIN... END, { … }) Orice funcție computațională poate fi realizată prin folosirea a doar trei structuri de control: Teorema Secvența: executarea unui subprogram Programării și apoi a unui alt subprogram Selectarea: executarea unuia dintre Structurate cele două subprograme în funcție de valoarea unei expresii booleene (Böhm–Jacopini) Iterația: executarea în mod repetat a unui subprogram atâta timp cât o expresie booleană este adevărată Limbajele de programare moderne combină mai multe stiluri de programare Exemplu C# Organizarea programelor in clase (POO) Implementarea comportamentului folosind blocuri IF, WHILE, FOR, apeluri de Metode (Programare Structurată) Suport pentru imutabilitate (tipul Record), expresii Lambda și funcții anonime, potrivirea modelului folosind expresii switch, transformarea datelor folosind LINQ (Programare Funcțională) Discipline Anterioare Programarea Calculatoarelor – bazele programării structurate Tehnici de Programare – analiza algoritmilor Discipline Viitoare Medii și Tehnologii de Programare (an 2) Baze de Date (an 2) Programarea Aplicațiilor Internet (an 3) Inginerie Software (an 3) Proiectarea Sistemelor Software Complexe (an 4) Dezvoltarea Aplicațiilor de Tip Cloud (an 4) Cine a învățat / folosit un limbaj de programare OO? Quiz Menti – Esența POO Învățarea unui limbaj nou necesită înțelegerea modului de gândire specific acelui limbaj Istoric ‘60 – apar primele concept OO ‘90 – paradigma OO se răspândește pe scară largă o dată cu apariția Internetului, apariția limbajului Java și dezvoltarea tehnologiilor web ‘00 – prezent – conceptele OO continuă să evolueze odată cu evoluția tehnologică (web, aplicații mobile, aplicații cloud) POO și Programare Programare POO Structurată Structurată Sunt Complementare POO - Concepte Ce este un obiect? Obiect = entitate care conține atât date cât și comportament Intrări Ieșiri obiect Ce este un program OO? O colecție de obiecte Datele unui Obiect Starea obiectului Termenul POO – atribut Atributele – informațiile prin care obiectele se diferențiază Ex: student – nume, prenume, număr matricol etc. Comportamentul unui Obiect Ce poate face un obiect: proceduri, funcții sau subrutine Termenul POO: metode Invocarea unei metode = trimiterea unui mesaj către obiect Exemplu student - metode pentru a actualiza/obține valorile atributelor: setFirstName, getFirstName catalog – metoda calculare media Demo attribute și comportament pentru student De ce este nevoie pentru a folosi o metodă? Semnătura unei metode Numele metodei Tipul parametrilor și ordinea lor Tipul returnat (uneori) Demo: student și Catalog – calculateFinalGrade() catalog Invocă getRegistrationNumber() Principalul mecanism prin private string firstName = ""; Getters and care se controlează accesul //setter and getter la atributele unui obiect Setters C# a introdus conceptul de public string GetFirstName(){ return firstName; proprietate care combina } cele două metode într-o singură construcție public string SetFirstName(string value){ firstName = value; } //properties public string FirstName{ get { return firstName; } set { firstName = value; } } Demo Student cu proprietăți Diagrama de Clase UML 3 secțiune: Numele Atributele Metodele “-” privat “+” public Demo Draw.io Ce este o clasă Șablon pentru crearea obiectelor Similare conceptului de tip de date Definește atributele și comportamentele obiectelor Sunt bucăți de cod Trebuie create înaintea obiectelor Exemplu de clasă public class Student { //atribute private string name = ""; //metode public string GetName() { return name; } public void SetName(string n) { name = n; } } Modificatorii de acces Public – metoda/atributul poate fi acesat(ă) de către alte obiecte Private – metoda/atributul poate fi acesat(ă) doar obiectul care o/îl conține Crearea unui obiect Crearea unui obiect = obiectul este instanțiat Fiecare obiect creat are propria copie a atributelor Metodele cel mai probabil sunt partajate (compilator) Ex: studenții: Popescu, Ionescu, Georgescu Demo - mai multe instanțe de studenți Clasele sunt ca formele pentru biscuiți Diferența față de Programare Structurată Structurată OO Atributele și comportamentul sunt Atributele (date) și comportamentul separate (metode) conținute într-un singur obiect Datele globale Datele izolate Acces la date necontrolat Acces la date controlat Cum ar arăta o listă de elemente Programare Structurată POO Sortare Căutare Listă Elementele Listei Elementele Listei Sortare (Stare Globală) Căutare Adăugare Adăugare Principalul Beneficiu al OO: nivel ridicat de integritate a datelor Data Hiding (Ascunderea Datelor) Restricționarea accesului la anumite atribute si metode POO vs. Programare Structurată Schimbul de obiecte include date si comportament (ex. obiectul Student conține datele studentului + metodele ce expun comportamentul obiectului) Concluzii Programare structurată / procedurală și POO sunt complementare Un obiect este o entitate ce are date și comportament O clasă este un șablon pe baza căruia obiectele sunt create Principalul beneficiu al POO este asigurarea integrității datelor

Use Quizgecko on...
Browser
Browser