curs oop

64
Ce este OOP? ˆ In practic˘ a C++ cookies Crearea unei Clase Link-uri Utile Object Oriented Programming CDL - cursul 2 Adrian Scoic˘ a [email protected] 9 martie 2013 ROSEdu 1 / 24

description

programare

Transcript of curs oop

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Object Oriented ProgrammingCDL - cursul 2

    Adrian Scoica

    [email protected] martie 2013

    ROSEdu

    1 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    1 Ce este OOP?

    2 In practica

    3 C++ cookies

    4 Crearea unei Clase

    5 Link-uri Utile

    2 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    1 Ce este OOP?

    2 In practica

    3 C++ cookies

    4 Crearea unei Clase

    5 Link-uri Utile

    3 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Despre concept

    O paradigma de programare care foloses, te obiecte pentru amodela aplicat, ii

    O modalitate de a structura mai modular logica unei aplicat, ii

    Face limbajele mai flexibile s, i codul mai intuitiv

    Not, iuni centrale:

    clasaobiectmos, tenirencapsularepolimorfism

    4 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Despre concept

    O paradigma de programare care foloses, te obiecte pentru amodela aplicat, ii

    O modalitate de a structura mai modular logica unei aplicat, ii

    Face limbajele mai flexibile s, i codul mai intuitiv

    Not, iuni centrale:

    clasaobiectmos, tenirencapsularepolimorfism

    4 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Despre concept

    O paradigma de programare care foloses, te obiecte pentru amodela aplicat, ii

    O modalitate de a structura mai modular logica unei aplicat, ii

    Face limbajele mai flexibile s, i codul mai intuitiv

    Not, iuni centrale:

    clasaobiectmos, tenirencapsularepolimorfism

    4 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Despre concept

    O paradigma de programare care foloses, te obiecte pentru amodela aplicat, ii

    O modalitate de a structura mai modular logica unei aplicat, ii

    Face limbajele mai flexibile s, i codul mai intuitiv

    Not, iuni centrale:

    clasaobiectmos, tenirencapsularepolimorfism

    4 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Despre concept

    O paradigma de programare care foloses, te obiecte pentru amodela aplicat, ii

    O modalitate de a structura mai modular logica unei aplicat, ii

    Face limbajele mai flexibile s, i codul mai intuitiv

    Not, iuni centrale:

    clasa

    obiectmos, tenirencapsularepolimorfism

    4 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Despre concept

    O paradigma de programare care foloses, te obiecte pentru amodela aplicat, ii

    O modalitate de a structura mai modular logica unei aplicat, ii

    Face limbajele mai flexibile s, i codul mai intuitiv

    Not, iuni centrale:

    clasaobiect

    mos, tenirencapsularepolimorfism

    4 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Despre concept

    O paradigma de programare care foloses, te obiecte pentru amodela aplicat, ii

    O modalitate de a structura mai modular logica unei aplicat, ii

    Face limbajele mai flexibile s, i codul mai intuitiv

    Not, iuni centrale:

    clasaobiectmos, tenire

    ncapsularepolimorfism

    4 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Despre concept

    O paradigma de programare care foloses, te obiecte pentru amodela aplicat, ii

    O modalitate de a structura mai modular logica unei aplicat, ii

    Face limbajele mai flexibile s, i codul mai intuitiv

    Not, iuni centrale:

    clasaobiectmos, tenirencapsulare

    polimorfism

    4 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Despre concept

    O paradigma de programare care foloses, te obiecte pentru amodela aplicat, ii

    O modalitate de a structura mai modular logica unei aplicat, ii

    Face limbajele mai flexibile s, i codul mai intuitiv

    Not, iuni centrale:

    clasaobiectmos, tenirencapsularepolimorfism

    4 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Despre concept

    O paradigma de programare care foloses, te obiecte pentru amodela aplicat, ii

    O modalitate de a structura mai modular logica unei aplicat, ii

    Face limbajele mai flexibile s, i codul mai intuitiv

    Not, iuni centrale:

    clasaobiectmos, tenirencapsularepolimorfism

    4 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Despre clase

    Ce este o clasa?

    Trasaturile comune pot fi:

    structurale

    comportamentale

    5 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Despre clase

    Ce este o clasa?

    Trasaturile comune pot fi:

    structurale

    comportamentale

    5 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Despre clase

    Ce este o clasa?

    Trasaturile comune pot fi:

    structurale

    comportamentale

    5 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Despre clase

    Ce este o clasa?

    Trasaturile comune pot fi:

    structurale

    comportamentale

    5 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Despre clase

    Ce este o clasa?

    Trasaturile comune pot fi:

    structurale

    comportamentale

    5 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    1 Ce este OOP?

    2 In practica

    3 C++ cookies

    4 Crearea unei Clase

    5 Link-uri Utile

    6 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Task: evident, a populat, iei

    Vrem sa implementam un mecanism de a lucra cu o populat, ie deoameni ntr-o aplicat, ie (de exemplu, un joc).

    Cerint, e:

    Indivizii sa aiba nume

    Indivizii sa aiba varste diferite s, i sume de bani diferite

    Indivizii sa poata dona bani unii altora

    Sa putem t, ine evident, a populat, iei

    7 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Task: evident, a populat, iei

    Vrem sa implementam un mecanism de a lucra cu o populat, ie deoameni ntr-o aplicat, ie (de exemplu, un joc). Cerint, e:

    Indivizii sa aiba nume

    Indivizii sa aiba varste diferite s, i sume de bani diferite

    Indivizii sa poata dona bani unii altora

    Sa putem t, ine evident, a populat, iei

    7 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Task: evident, a populat, iei

    Vrem sa implementam un mecanism de a lucra cu o populat, ie deoameni ntr-o aplicat, ie (de exemplu, un joc). Cerint, e:

    Indivizii sa aiba nume

    Indivizii sa aiba varste diferite s, i sume de bani diferite

    Indivizii sa poata dona bani unii altora

    Sa putem t, ine evident, a populat, iei

    7 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Task: evident, a populat, iei

    Vrem sa implementam un mecanism de a lucra cu o populat, ie deoameni ntr-o aplicat, ie (de exemplu, un joc). Cerint, e:

    Indivizii sa aiba nume

    Indivizii sa aiba varste diferite s, i sume de bani diferite

    Indivizii sa poata dona bani unii altora

    Sa putem t, ine evident, a populat, iei

    7 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Task: evident, a populat, iei

    Vrem sa implementam un mecanism de a lucra cu o populat, ie deoameni ntr-o aplicat, ie (de exemplu, un joc). Cerint, e:

    Indivizii sa aiba nume

    Indivizii sa aiba varste diferite s, i sume de bani diferite

    Indivizii sa poata dona bani unii altora

    Sa putem t, ine evident, a populat, iei

    7 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Task: evident, a populat, iei

    Vrem sa implementam un mecanism de a lucra cu o populat, ie deoameni ntr-o aplicat, ie (de exemplu, un joc). Cerint, e:

    Indivizii sa aiba nume

    Indivizii sa aiba varste diferite s, i sume de bani diferite

    Indivizii sa poata dona bani unii altora

    Sa putem t, ine evident, a populat, iei

    7 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Solut, ia clasica

    1 struct Player{2 char * name;

    3 int age, gold;

    4 };5 int Player count = 0;

    6 void init P(Player * player, char * name, int age, int gold){7 player->name = strdup(name);8 player->age = age;9 player->gold = gold;10 }11

    12 void donate(Player * player, Player * dest, int amount){13 dest->gold += amount;14 player->gold -= amount;15 }16

    17 void print Player (Player * player, FILE * file){18 fprintf(f,"Name: %s\nAge: %d\nGold: %d\n",19 player->name, player->age, player->gold);20 }

    8 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Solut, ia clasica1 struct Player{2 char * name;

    3 int age, gold;

    4 };5 int Player count = 0;

    6 void init P(Player * player, char * name, int age, int gold){7 player->name = strdup(name);8 player->age = age;9 player->gold = gold;10 }11

    12 void donate(Player * player, Player * dest, int amount){13 dest->gold += amount;14 player->gold -= amount;15 }16

    17 void print Player (Player * player, FILE * file){18 fprintf(f,"Name: %s\nAge: %d\nGold: %d\n",19 player->name, player->age, player->gold);20 }

    8 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Pas 1: Constructori

    1 struct Player{2 char * name;

    3 int age, gold;

    4

    5 Player(char * name, int age, int gold) :

    6 name(strdup(name)), age(age), gold(gold) { }7 };8

    9 int Player count = 0;

    10

    11 void donate(Player * player, Player * dest, int amount){12 dest->gold += amount;13 player->gold -= amount;14 }15

    16 void print Player (Player * player, FILE * file){17 fprintf(f,"Name: %s\nAge: %d\nGold: %d\n",18 player->name, player->age, player->gold);19 }

    9 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Pas 1: Constructori1 struct Player{2 char * name;

    3 int age, gold;

    4

    5 Player(char * name, int age, int gold) :

    6 name(strdup(name)), age(age), gold(gold) { }7 };8

    9 int Player count = 0;

    10

    11 void donate(Player * player, Player * dest, int amount){12 dest->gold += amount;13 player->gold -= amount;14 }15

    16 void print Player (Player * player, FILE * file){17 fprintf(f,"Name: %s\nAge: %d\nGold: %d\n",18 player->name, player->age, player->gold);19 }

    9 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Pas 2: Functii membru

    1 struct Player{2 char * name;

    3 int age, gold;

    4

    5 Player(char * name, int age, int gold) :

    6 name(strdup(name)), age(age), gold(gold) { }7

    8 void donate(Player * dest, amount) {9 dest->gold += amount;10 gold -= amount;

    11 }12 };13

    14 int Player count = 0;

    15

    16 void print Player (Player * player, FILE * file){17 fprintf(f,"Name: %s\nAge: %d\nGold: %d\n",18 player->name, player->age, player->gold);19 }

    10 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Pas 2: Functii membru1 struct Player{2 char * name;

    3 int age, gold;

    4

    5 Player(char * name, int age, int gold) :

    6 name(strdup(name)), age(age), gold(gold) { }7

    8 void donate(Player * dest, amount) {9 dest->gold += amount;10 gold -= amount;

    11 }12 };13

    14 int Player count = 0;

    15

    16 void print Player (Player * player, FILE * file){17 fprintf(f,"Name: %s\nAge: %d\nGold: %d\n",18 player->name, player->age, player->gold);19 }

    10 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Pas 3: Variabile statice

    1 struct Player{2 char * name;

    3 int age, gold;

    4 static int count;

    5

    6 Player(char * name, int age, int gold) :

    7 name(strdup(name)), age(age), gold(gold) { count++; }8

    9 void donate(Player * dest, amount) {10 dest->gold += amount;11 gold -= amount;

    12 }13 };14

    15 int Player::count = 0;

    16

    17 void print Player (Player * player, FILE * file){18 fprintf(f,"Name: %s\nAge: %d\nGold: %d\n",19 player->name, player->age, player->gold);20 }

    11 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Pas 3: Variabile statice1 struct Player{2 char * name;

    3 int age, gold;

    4 static int count;

    5

    6 Player(char * name, int age, int gold) :

    7 name(strdup(name)), age(age), gold(gold) { count++; }8

    9 void donate(Player * dest, amount) {10 dest->gold += amount;11 gold -= amount;

    12 }13 };14

    15 int Player::count = 0;

    16

    17 void print Player (Player * player, FILE * file){18 fprintf(f,"Name: %s\nAge: %d\nGold: %d\n",19 player->name, player->age, player->gold);20 }

    11 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Pas 4: Operatori

    1 struct Player{2 char * name;

    3 int age, gold;

    4 static int count;

    5

    6 Player(char * name, int age, int gold) :

    7 name(strdup(name)), age(age), gold(gold) { count++; }8

    9 void donate(Player * dest, amount) {10 dest->gold += amount;11 gold -= amount;

    12 }13 };14

    15 int Player::count = 0;

    16

    17 ostream& operator

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Pas 4: Operatori1 struct Player{2 char * name;

    3 int age, gold;

    4 static int count;

    5

    6 Player(char * name, int age, int gold) :

    7 name(strdup(name)), age(age), gold(gold) { count++; }8

    9 void donate(Player * dest, amount) {10 dest->gold += amount;11 gold -= amount;

    12 }13 };14

    15 int Player::count = 0;

    16

    17 ostream& operator

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Syntax sugar: Parametri Impliciti

    1 struct Player{2 char * name;

    3 int age, gold;

    4 static int count;

    5

    6 Player(char * name, int age = 20, int gold = 0) :

    7 name(strdup(name)), age(age), gold(gold) { count++; }8

    9 void donate(Player * dest, amount) {10 dest->gold += amount;11 gold -= amount;

    12 }13 };14

    15 int Player::count = 0;

    16

    17 ostream& operator

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Syntax sugar: Parametri Impliciti1 struct Player{2 char * name;

    3 int age, gold;

    4 static int count;

    5

    6 Player(char * name, int age = 20, int gold = 0) :

    7 name(strdup(name)), age(age), gold(gold) { count++; }8

    9 void donate(Player * dest, amount) {10 dest->gold += amount;11 gold -= amount;

    12 }13 };14

    15 int Player::count = 0;

    16

    17 ostream& operator

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Problem fix: Destructori

    1 struct Player{2 char * name;

    3 int age, gold;

    4 static int count;

    5

    6 Player(char * name, int age = 20, int gold = 0) :

    7 name(strdup(name)), age(age), gold(gold) { count++; }8

    9 virtual Player() { count--; free(name); }10

    11 void donate(Player * dest, amount) {12 dest->gold += amount;13 gold -= amount;

    14 }15 };16

    17 int Player::count = 0;

    18

    14 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Problem fix: Destructori

    1 struct Player{2 char * name;

    3 int age, gold;

    4 static int count;

    5

    6 Player(char * name, int age = 20, int gold = 0) :

    7 name(strdup(name)), age(age), gold(gold) { count++; }8

    9 virtual Player() { count--; free(name); }10

    11 void donate(Player * dest, amount) {12 dest->gold += amount;13 gold -= amount;

    14 }15 };16

    17 int Player::count = 0;

    18

    14 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Safety fix: Accesul la membri

    1 struct Player{2 private:3 char * name;

    4 int age, gold;

    5 static int count;

    6 public:7 Player(char * name, int age = 20, int gold = 0) :

    8 name(strdup(name)), age(age), gold(gold) { count++; }9 virtual Player() { count--; free(name); }10 void donate(Player * dest, amount) {11 dest->gold += amount;12 gold -= amount;

    13 }14 const char * get name() { return name; }15 int get age() { return age; }16 int get gold() { return gold; }17 static int get count() { return count; }18 };19

    20 int Player::count = 0;

    15 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Safety fix: Accesul la membri1 struct Player{2 private:3 char * name;

    4 int age, gold;

    5 static int count;

    6 public:7 Player(char * name, int age = 20, int gold = 0) :

    8 name(strdup(name)), age(age), gold(gold) { count++; }9 virtual Player() { count--; free(name); }10 void donate(Player * dest, amount) {11 dest->gold += amount;12 gold -= amount;

    13 }14 const char * get name() { return name; }15 int get age() { return age; }16 int get gold() { return gold; }17 static int get count() { return count; }18 };19

    20 int Player::count = 0;

    15 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    New horizons: Mos, tenirea s, i supradefinirea

    1 struct Thief : public Player {2 private:3 int stolen;

    4 public:5 Thief(char * name, int age = 30, int gold = 0) :

    6 Player(name, age, gold), stolen(0) { }7

    8 void steal(Player * player, int amount) {9 player->donate(this, amount);10 }11

    12 void donate(Player * dest, amount) {13 }14 };

    Daca am vrea ca un Thief sa se amestece printre Player, atunci trebuiesa declaram metoda din clasa de baza ca fiind virtuala!

    16 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    New horizons: Mos, tenirea s, i supradefinirea

    1 struct Thief : public Player {2 private:3 int stolen;

    4 public:5 Thief(char * name, int age = 30, int gold = 0) :

    6 Player(name, age, gold), stolen(0) { }7

    8 void steal(Player * player, int amount) {9 player->donate(this, amount);10 }11

    12 void donate(Player * dest, amount) {13 }14 };

    Daca am vrea ca un Thief sa se amestece printre Player, atunci trebuiesa declaram metoda din clasa de baza ca fiind virtuala!

    16 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    New horizons: Mos, tenirea s, i supradefinirea

    1 struct Thief : public Player {2 private:3 int stolen;

    4 public:5 Thief(char * name, int age = 30, int gold = 0) :

    6 Player(name, age, gold), stolen(0) { }7

    8 void steal(Player * player, int amount) {9 player->donate(this, amount);10 }11

    12 void donate(Player * dest, amount) {13 }14 };

    Daca am vrea ca un Thief sa se amestece printre Player, atunci trebuiesa declaram metoda din clasa de baza ca fiind virtuala!

    16 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    1 Ce este OOP?

    2 In practica

    3 C++ cookies

    4 Crearea unei Clase

    5 Link-uri Utile

    17 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    STL: Introduction

    STL este o biblioteca (accesibila printr-o serie de headere) standard dinC++.

    Cont, ine:

    Containere de date

    Algoritmi

    Pe langa STL, limbajul mai pune la dispozit, ie:

    Metode de I/O

    Clase pentru lucrul cu fis, iere

    Zeci de alte mbunatat, iri

    18 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    STL: Introduction

    STL este o biblioteca (accesibila printr-o serie de headere) standard dinC++. Cont, ine:

    Containere de date

    Algoritmi

    Pe langa STL, limbajul mai pune la dispozit, ie:

    Metode de I/O

    Clase pentru lucrul cu fis, iere

    Zeci de alte mbunatat, iri

    18 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    STL: Introduction

    STL este o biblioteca (accesibila printr-o serie de headere) standard dinC++. Cont, ine:

    Containere de date

    Algoritmi

    Pe langa STL, limbajul mai pune la dispozit, ie:

    Metode de I/O

    Clase pentru lucrul cu fis, iere

    Zeci de alte mbunatat, iri

    18 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    STL: Introduction

    STL este o biblioteca (accesibila printr-o serie de headere) standard dinC++. Cont, ine:

    Containere de date

    Algoritmi

    Pe langa STL, limbajul mai pune la dispozit, ie:

    Metode de I/O

    Clase pentru lucrul cu fis, iere

    Zeci de alte mbunatat, iri

    18 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    STL: Introduction

    STL este o biblioteca (accesibila printr-o serie de headere) standard dinC++. Cont, ine:

    Containere de date

    Algoritmi

    Pe langa STL, limbajul mai pune la dispozit, ie:

    Metode de I/O

    Clase pentru lucrul cu fis, iere

    Zeci de alte mbunatat, iri

    18 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    STL: Introduction

    STL este o biblioteca (accesibila printr-o serie de headere) standard dinC++. Cont, ine:

    Containere de date

    Algoritmi

    Pe langa STL, limbajul mai pune la dispozit, ie:

    Metode de I/O

    Clase pentru lucrul cu fis, iere

    Zeci de alte mbunatat, iri

    18 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    STL: Introduction

    STL este o biblioteca (accesibila printr-o serie de headere) standard dinC++. Cont, ine:

    Containere de date

    Algoritmi

    Pe langa STL, limbajul mai pune la dispozit, ie:

    Metode de I/O

    Clase pentru lucrul cu fis, iere

    Zeci de alte mbunatat, iri

    18 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    STL: Introduction

    STL este o biblioteca (accesibila printr-o serie de headere) standard dinC++. Cont, ine:

    Containere de date

    Algoritmi

    Pe langa STL, limbajul mai pune la dispozit, ie:

    Metode de I/O

    Clase pentru lucrul cu fis, iere

    Zeci de alte mbunatat, iri

    18 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Exemplu utilizare: stringuri, lucrul cu fis, iere

    1 #include2 #include3

    4 int main()

    5 {6 std::string s1, s2;

    7 std::cin >> s1 >> s2;8

    9 int fromHere;

    10 while ((fromHere = s1.find(s2)) != std::string::npos){11 s1.replace(fromHere, s2.length(), "");

    12 }13

    14 std::cout

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Exemplu utilizare: vectori, algoritmi1 #include2 #include3 #include4

    5 int main()

    6 {7 int n, x;

    8 std::vector v;9

    10 for (int i = 0; i < n; i++){11 std::cin >> x;12 v.push back(x);

    13 }14

    15 sort(v.begin(), v.end()); // Dar descrescator??16 for (int i = 0; i < n; i++){17 std::cout

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    1 Ce este OOP?

    2 In practica

    3 C++ cookies

    4 Crearea unei Clase

    5 Link-uri Utile

    21 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Cerint, e

    Am vrea o clasa care sa implementeze operat, ii aritmetice cu numerecomplexe:

    Clasa se va numi Complex

    Constructorul va avea parametrii implicit, i

    Membrii de date vor fi privat, i

    Avem la dispozit, ie funct, ii getter s, i funct, ie de aflat modulul

    Avem un operator de adunare s, i unul de scadere

    22 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Cerint, e

    Am vrea o clasa care sa implementeze operat, ii aritmetice cu numerecomplexe:

    Clasa se va numi Complex

    Constructorul va avea parametrii implicit, i

    Membrii de date vor fi privat, i

    Avem la dispozit, ie funct, ii getter s, i funct, ie de aflat modulul

    Avem un operator de adunare s, i unul de scadere

    22 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Cerint, e

    Am vrea o clasa care sa implementeze operat, ii aritmetice cu numerecomplexe:

    Clasa se va numi Complex

    Constructorul va avea parametrii implicit, i

    Membrii de date vor fi privat, i

    Avem la dispozit, ie funct, ii getter s, i funct, ie de aflat modulul

    Avem un operator de adunare s, i unul de scadere

    22 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Cerint, e

    Am vrea o clasa care sa implementeze operat, ii aritmetice cu numerecomplexe:

    Clasa se va numi Complex

    Constructorul va avea parametrii implicit, i

    Membrii de date vor fi privat, i

    Avem la dispozit, ie funct, ii getter s, i funct, ie de aflat modulul

    Avem un operator de adunare s, i unul de scadere

    22 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Cerint, e

    Am vrea o clasa care sa implementeze operat, ii aritmetice cu numerecomplexe:

    Clasa se va numi Complex

    Constructorul va avea parametrii implicit, i

    Membrii de date vor fi privat, i

    Avem la dispozit, ie funct, ii getter s, i funct, ie de aflat modulul

    Avem un operator de adunare s, i unul de scadere

    22 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Cerint, e

    Am vrea o clasa care sa implementeze operat, ii aritmetice cu numerecomplexe:

    Clasa se va numi Complex

    Constructorul va avea parametrii implicit, i

    Membrii de date vor fi privat, i

    Avem la dispozit, ie funct, ii getter s, i funct, ie de aflat modulul

    Avem un operator de adunare s, i unul de scadere

    22 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    1 Ce este OOP?

    2 In practica

    3 C++ cookies

    4 Crearea unei Clase

    5 Link-uri Utile

    23 / 24

  • Ce este OOP? In practica C++ cookies Crearea unei Clase Link-uri Utile

    Link-uri Utile

    http://www.cplusplus.com - Sursa oficiala de documentat, ie a limbajului

    http://www.cs.brown.edu/~jak/proglang/cpp/stltut/tut.html - Untutorial de baza pentru STL

    http://www.codeproject.com/KB/stl/stlintroduction.aspx - Introduceren STL

    http://swarm.cs.pub.ro/~adrian.sc/PA/TutorialC++.pdf - Tutorial C++pentru programatorii de Java/C#

    http://cdl.rosedu.org/2010/_media/cursuri/curs01/curs1_oop.pdf - Oprezentare mai detaliata despre OOP n C++ de la CDL 2010

    24 / 24

    http://www.cplusplus.comhttp://www.cs.brown.edu/~jak/proglang/cpp/stltut/tut.htmlhttp://www.codeproject.com/KB/stl/stlintroduction.aspxhttp://swarm.cs.pub.ro/~adrian.sc/PA/TutorialC++.pdfhttp://cdl.rosedu.org/2010/_media/cursuri/curs01/curs1_oop.pdf

    Ce este OOP?n practicaC++ cookiesCrearea unei ClaseLink-uri Utile