- 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 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
Do'stlaringiz bilan baham: |