Tải bản đầy đủ (.ppt) (18 trang)

Tài liệu lập trình C tiếng Việt Tong ket

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (339.09 KB, 18 trang )

Lập trình hướng đối tượng
Bài 12: Tổng kết LTHĐT với C++

1


Nội dung





Lập trình hướng đối tượng
C++ và các đặc điểm
Một số thư viện
Visual studio

2


Lập trình hướng đối tượng
Xây dựng chương trình bằng cách xây
dựng các đối tượng và thiết lập sự cộng
tác của chúng.

3


Các nguyên tắc cơ bản
• Trừu tượng hóa
– Nguyên tắc chế ngự sự phức tạp


– Tập trung vào các yếu tố chính, bỏ qua các yếu tố
không liên quan

• Đóng gói
– Ẩn giấu chi tiết thể hiện
– Đóng gói dữ liệu và hành vi cùng nhau

• Phân cấp
– Xây dựng các đối tượng mới bằng cách tham
chiếu hoặc mở rộng các đối tượng khác

4


Các khái niệm chính
Class: Order
Data

• Lớp
• Đối tượng
• Giao diện

CalculateTotalPrice( )

Next( )

Methods

Interface: IList


• Thừa kế
• Đa hình
PUBLIC:

orderNum AS INT
custNum AS INT

PUBLIC:
CreateOrder( )
UpdateOrder( )
GetOrderTotal( )
Next( )

5


C++ và các đặc điểm
Thiết lập, hủy bỏ, thiết lập copy, gán,
viết chồng toán tử, khuôn hình

6


C++
• Ngôn ngữ
• Thư viện












String
Regular Expression
I/O Stream
Smart Pointer
Exception
Mathematical Utilities
Time Utilities
Random Number
Initializer List
Pair và Tuple






Function Object
Multithreading
Type Trait
Standard Template
Library
– STL Containers
– STL Algorithms


/>
7


C++ các đặc điểm cơ bản











Lớp, đối tượng, thừa kế, đa hình, viết chồng toán tử
Thuộc tính truy cập: private, protected, public
Phương thức ảo, thuần ảo
Lớp trừu tượng
Đơn thừa kế, đa thừa kế
Phương thức thiết lập, phương thức hủy bỏ
Thiết lập copy, move
Gán và gán move
Dữ liệu, phương thức tĩnh
Khuôn hình hàm, khuôn hình lớp
8



Move constructor
#include <cstring>
#include <algorithm>
class string {
char* data;
public:
string(const char* p){
size_t size = strlen(p) + 1;
data = new char[size];
memcpy(data, p, size);
}
~string(){
delete[] data;
}
string(const string& that){
size_t size = strlen(that.data) + 1;
data = new char[size];
memcpy(data, that.data, size);
}

string a(x); // Line 1
string b(x + y); // Line 2
string c(some_function_returning_a
_string()); // Line 3

string(string&& that) // string&&
is an rvalue reference to a string
{
data = that.data;
that.data = nullptr;

}

9


Một số đặc điểm mới trong C++ 11
• Biểu thức Lambda (hàm vô danh)
[capture](parameters)->return-type {body}
int main()
{
char s[]="Hello World!";
int Uppercase = 0; //modified by the lambda
for_each(s, s+sizeof(s), [&Uppercase] (char c) {
if (isupper(c))
Uppercase++;
});
cout<< Uppercase<<" uppercase letters in: "<< s<}

Các kiểu capture
[], [=],[&],
[=,&a],[this]

10


• Từ khóa auto và decltype
auto x=0; //x has type int because 0 is int
auto c='a'; //char
auto d=0.5; //double

auto national_debt=14400000000000LL;//long long
void func(const vector<int> &vi){
vector<int>::const_iterator ci=vi.begin();
}

auto ci=vi.begin();

const vector<int> vi;
typedef decltype (vi.begin()) CIT;
CIT another_const_iterator;

11


• Cú pháp khởi tạo đồng nhất
std::string s("hello");
int m=int(); //default initialization
std::string s="hello";
int x=5;
int arr[4]={0,1,2,3};
struct tm today={0};
struct S {
int x;
S(): x(0) {} }

class C{
int a;
int b;
public:
C(int i, int j);

};
C c {0,0}; //C++11 only. Equivalent to: C c(0,0);
int* a = new int[3] { 1, 2, 0 }; /C++11 only
class X {
int a[4];
public:
X() : a{1,2,3,4} {} //C++11, member array init
};

// C++11 container initializer
vector<string> vs={ "first", "second", "third"};
map singers =
{ {"Lady Gaga", "+1 (212) 555-7890"},
{"Beyonce Knowles", "+1 (212) 555-0987"}};

class C{
int a=7; //C++11 only
public:
C();};
12


• Hàm default và delete
struct A {
A()=default; //C++11
virtual ~A()=default; //C++11
};

int func()=delete;


• Con trỏ nullptr
void f(int); //#1
void f(char *);//#2
//C++03
f(0); //which f is called?
//C++11
f(nullptr) //unambiguous, calls #2

const char *pc=str.c_str(); //data pointers
if (pc!=nullptr)
cout<int (A::*pmf)()=nullptr; //pointer to
member function
void (*pmf)()=nullptr; //pointer to
function

13


Một số thư viện
Boost, CGAL, QT, SOCI, EIGEN

14


Thư viện lớn, hỗ trợ nhiều khía cạnh lập trình C++
Phiên bản hiện tại: 1.59.0

Thư viện các cấu trúc và thuật toán hình học
Phiên bản hiện tại: 4.7


Khung ứng dụng c++ đa nền tảng
Phiên bản hiện tại: 5.5.0


SOCI

Thư viện truy cập cơ sở dữ liệu
Phiên bản hiện tại: 3.2
/>Thư viện truy cập cơ sở dữ liệu
Phiên bản hiện tại: 3.2
/>15


Visual studio
Môi trường phát triển ứng dụng

16


Cấu hình, kiến trúc
• Cấu hình Debug hay Release
• Kiến trúc x86 hay x64

17


Compile và link

18




×