History of C++ Nima uchun C++ C++ o’zi nima? Oydt (oop) Function overloading


Download 196.35 Kb.
Sana20.04.2020
Hajmi196.35 Kb.
#100361

- History of C++ - Nima uchun C++ - C++ o’zi nima? - OYDT (OOP) - Function overloading


Toshkent axborot texnologiyalari universiteti

C++ da sinflar



Ma’ruza

History of C++

C++ tili Brayn Stroustrup tomonidan 1979 yilda Bell Labaratories’da ishlab chiqqan. C++ tilining birinchi nomi “C with classes” bo’lgan, 1983 yil C++ deb nomlangan. Brayn Stroustrup Simula tilining OOP imkoniyatlarini va classlarini C ga qo’shib 1983 yil C++ tiliga asos solgan.

Nima uchun C++?

Agar C da yozilan kodlar qatori 25000 – 100000 ming bo’ladigan bo’lsa kodni boshqarish shu darajali qiyin bo’ladiki, C da bu kodni boshqarib bo’lmay qoladi, boshqarishning mexanizmi yo’q. C++ tilining maqsadlaridan biri shunday holatni boshqarish bo’lgan.

C++ nima?

C++ “obyektga yo’naltirilgan” dasturlash tili.

Class’lar deb atalgan konsepsiyadan foydalangan holda ma’lumotlar abstraksyasini shakllantiradi.

C++ - obyektga yo’naltirilgan g’oya

  • C++ C dan yaxshiroq.
  • Class & Obyektlar
  • Inkapsulyatsiya(Encapsulation) & Tiplarni kengaytirish (Type extensibility)
  • O’tkazish(Conversions), Operatorlar(Operators)
  • Vorislik(Inheritance) & Polimorfizm(Polymorphism)
  • Dinamik bog’lash(Dynamic Binding)

C++ va C ning farqlari

  • C prosedurali til C++ esa prosedurali va obyektga yo’naltirilgan
  • C++ da ma’lumotni yashirsa bo’ladi, C da esa yo’q
  • C quyi-darajali til, C++ o’rta-darajali til
  • C funksiyalar bilan boshqariladi, C++ esa obyektlar bilan
  • C++ funksiyalarni qayta yuklash (overload) mumkin, C da yo’q
  • C++ da strukturalarni ichida funksiyalar ishlatishimiz mumkin, C da yo’q
  • Standart chiqarish va kiritish ikkala tilda har hil
  • C++ da o’zgaruvchilarga ssilka ishlatish mumkin, C da yo’q
  • C++ hatolarni ushlashi(Exception Handling) mumkin, C da yo’q
  • C++ da NAMESPACE imkoniyati mavjud, C da yo’q

OOP o’zi nima?

  • OOP asosiy 3 ta hususiyatdan iborat bo’lishi kerak.
    • Inkapsulyatsiya (Incapsulation)
    • Polimorfizm (Polymorphism)
    • Vorislik (Inheritance)

Inkapsulyatsiya (Incapsulation)

  • Ma’lumotlarni himoyalash. Yani obyektga tegishli bo’lgan ma’lumotlarni tashqi omillardan himoyalaydi. Himoyalangan ma’lumotlarga faqat obyektning o’zi murojat qilishi mumkin. private, public, protected kalit so’zlari ma’lumotlarni ochiq, yopiqligini tashkillashtirib beradi.

class Encapsulation {

private:


int summa = 500;

protected:

int smax = 45500;

public:


int getSumma();

};

Encapsulation


Polimorfizm (Polymorphism)

  • Bitta interfeys, bir nechta metod. Yani metodlarni overloadi. Bu degani bitta metod har hil tofadagi tiplarni qabul qilib natijasini chiqarib beradi. Misol uchun sum funksiyasi faqat int,int yoki float,float yoki float,int va hk qabul qilib natijani chiqarib beradi

class Animal {

public:


void talk() {

cout<<"Salom";

}

}

class Dog:public Animal {



public:

void talk() {

cout<<"WowWow“;

}

}



class Cat:public Animal {

public:


void talk() {

cout<<"Meow“;

}

}

class Odam:public Animal {



}

void main() {

Cat e;

Dog d;


Odam o;

e.talk();

d.talk();

o.talk();

}

}

Natija:



Meow

WowWow


Salom

Polymorphism

Vorislik (Inheritance)

  • Bir obyekt boshqa bir obyektning hususiyat va metodlarini oladi. Yani bir class boshqa classdan nasl oladi. 1 chi classning hamma hususiyat va metodlari 2 chi classga o’tadi.

class InheritanceHayvonlar {

public:


void sleep() {

cout<<"sleeping\n";

}

};

class InheritanceDog:public InheritanceHayvonlar {



public:

void run() {

cout<<“Run\n";

}

};



int main() {

InheritanceDog d;

d.run();

d.sleep();



}

Kutubxonalarni e’lon qilish

C++ da kutubxonalar quyidagicha e’lon qilinadi.

C++ ning eski stilida C kabi e’lon qilinardi, yani

#include

Yangi stilda

#include

iostream stdio.h ga analog kutubxona.

C kutubxonalarini C++ da yangi stilda e’lon qilish uchun C kutubxonalarini oldiga <ckutubxona> ko’rinishida yozilishi kerak. Misol: ,

Namespace

Alohida ajratilgan fazo bo’lib, funksiya va classlarni bir biri bilan konflikt bo’lmasligini taminlab beradi. Namespace’larga ma’no jihatidan bir biriga yaqin bo’lgan elementlar yoziladi.

using namespace std; qo’shganda unda biz std namespace ichidagi barcha elementlarga murojat qila olamiza. Agar qo’shmasak std namespace ichidagi elementlarga std::element ko’rinishida murojat qilishimiz kerak. Misol: std::cout, std::cin kabi murojat qilinadi.

Input & Output

C++ da input & output quyidagicha amalga oshiriladi.

cout=stdout, cin=stdin ga teng

Output:

cout<<“Salom”<<“Hello”<<“\n”;

cout<

Input:

cin>>x>>y>>z;

cin>>str;

C tilidagi printf = cout, scanf=cin. C++ tilida chiqariladigan va kiritiladigan o’zgaruvchining tipi ko’rsatilmaydi, yani C tiliga o’xshab formatli kiritish yo’q. C++ tilida bemalol C tilining input & output funksiyalarini ishlatishimiz mumkin.

IOstream

Class bilan tanishuv

Class C++ tilining eng asosiy qismi. Obyekt yaratishdan oldin birinchi bo’lib obyektning umumiy ko’rinishini class kalit so’zi bilan tuzib olish kerak. Sintaksis jihatidan class strukturaga o’xshab ketadi.

Class e’lon qilish

class class_nomi {

private: vars & methods

public: vars & methods

protected: vars & methods

} obyekt nomlari;

Misol

class Car {

private:

int sum;

int quantity_n;

public:

void quantity(int n);

void buy();

};

void Car::quantity(int n) { quantity_n=n; }

void Car::quantity(int n) {

cout<

}

Misol

#include

using namespace std;

… -> class

int main(){

Car a;

a.quantity(40);

a.buy();

return 0;

}

Function overloading

  • Agar funksiyaning parametrlari har hil tip oladigan bo’lsa unda funksiyalarni qayta yuklashimiz kerak, yani overload. Bunda funksiya nomi bir hil faqat qaytarish tipi va qabul qiladigan parametrlarning tiplari o’zgaradi.

Misol

#include

using namespace std;

int sum(int a, int b) { return a+b; }

double sum(double a, double b) { return a+b; }

int main() {

cout<

cout<

return 0;

}

Xulosa


Download 196.35 Kb.

Do'stlaringiz bilan baham:





Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling