1. Trang chủ
  2. » Công Nghệ Thông Tin

Từ khái quát đến cụ thể

5 424 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Từ khái quát đến cụ thể
Trường học Trường Đại Học
Thể loại bài luận
Định dạng
Số trang 5
Dung lượng 13,68 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đầu tiên đưa ra các lớp để mô tả những đối tượng chung, sau đó dẫn xuất tới các đối tượng ngày một cụ thể hơn.. Khi đó ta có thể xây dựng một lớp cơ sở gồm các phần dữ liệu chung.. Mỗi t

Trang 1

Từ khái quát đến cụ thể

Tính thừa kế cũng thường dùng để thiết kế các bài toán theo hướng từ khái quát đến cụ thể,

từ chung đến riêng Đầu tiên đưa ra các lớp để mô tả những đối tượng chung, sau đó dẫn xuất tới các đối tượng ngày một cụ thể hơn

Một trường hợp khác cũng thường gặp là: Quản lý nhiều thực thể có những phần dữ liệu chung Khi đó ta có thể xây dựng một lớp cơ sở gồm các phần dữ liệu chung Mỗi thực thể sẽ được mô tả bằng một lớp dẫn xuất từ lớp cơ sở này

Sau đây là một số ví dụ minh hoạ:

Ví dụ 1 (minh hoạ tư tưởng đi từ khái quát đến cụ thể) : Giả sử cần quản lý sinh viên của

một trường đại học Khi đó ta có thể bắt đầu từ lớp SINH_VIEN (Sinh viên) Sau đó dùng nó làm cơ sở để dẫn xuất tới các lớp mô tả các đối tượng sinh viên cụ thể hơn, ví dụ: SV Tin, SV Toán, SV Luật, SV Du lịch,

Các bài toán kiểu như vậy rất thường gặp trong thực tế

Ví dụ 2 (minh hoạ phần chung của nhiều thực thể) Giả sử cần xây dựng phần mềm để thực

hiện các phép tính về ma trân vuông và véc tơ cấp n Ta có nhận xét là n chung cho cả véc tơ

và ma trận Hơn nữa nó còn chung cho tất cả các ma trận và véc tơ cùng xét trong bài toán Vì vậy có thể định nghĩa một lớp cơ sở chỉ có một thuộc tính tĩnh (static) n Các lớp ma trận, véc

tơ dẫn xuất từ lớp này và sử dụng chung cùng một giá trị n

Dưới đây là chương trình thực hiện các phép toán ma trận, véc tơ Chương trình được tổ chức thành 3 lớp:

Lớp CAP (Cấp ma trận, véc tơ) gồm một thành phần tĩnh n và phương thức nhập n

Lớp VT (Véc tơ) có một thuộc tính là mảng một chiều (chứa các phần tử của véc tơ) và các phương thức nhập, xuất

Lớp MT (Ma trận) có một thuộc tính là mảng 2 chiều (chứa các phần tử của ma trận) , các phương thức nhập, xuất và nhân Lớp MT là bạn của lớp VT

Chương trình sẽ nhập một ma trận, nhập một véc tơ và tính tích của chúng

//CT5-13

// ma tran vec to

// Dùng thuộc tính static

#include <conio.h>

#include <stdio.h>

#include <iostream.h>

#include <ctype.h>

class CAP;

class MT;

class VT;

class CAP

{

private:

static int n;

public:

Trang 2

void nhap()

{

int ch;

if (n==0)

{

cout << "\nN= "; cin >> n;

}

else

{

cout <<"\n Hien n = " << n;

cout << "\n Co thay doi n? - C/K";

ch=toupper(getch());

if (ch=='C')

{ cout << "\nN= "; cin >> n;

} }

}

int getN()

{

return n;

}

} ;

int CAP::n=0;

class MT : public CAP

{

private:

double a[20][20];

public:

void nhap();

void xuat();

VT operator*(VT x);

};

class VT : public CAP

{

private:

double x[20];

public:

friend class MT;

Trang 3

void xuat();

};

void MT::nhap()

{

int n,i,j;

n = this->getN();

if (n==0)

{

this->CAP::nhap();

n = this->getN();

}

for (i=1; i<=n; ++i)

for (j=1; j<=n; ++j)

{

cout << " PT hang " << i << " cot " << j << " = ";

cin >> a[i][j];

}

}

void MT::xuat()

{

int n,i,j;

n = this->getN();

if (n)

for (int i=1; i<=n; ++i)

{

cout << "\n" ;

for (int j=1; j<=n; ++j)

cout << a[i][j] << " ";

}

}

VT MT::operator*(VT x)

{

VT y;

int n,i,j;

n = this->getN();

for (i=1; i<=n; ++i)

{

y.x[i]=0;

for (j=1; j<=n; ++j)

y.x[i] += a[i][j]*x.x[j];

}

Trang 4

return y;

}

void VT::nhap()

{

int n,i;

n = this->getN();

if (n==0)

{

this->CAP::nhap();

n = this->getN();

}

for (i=1; i<=n; ++i)

{

cout << " PT thu " << i << " = "; cin >> x[i];

}

}

void VT::xuat()

{

int n,i;

n = this->getN();

if (n)

{

cout << "\n";

for (int i=1; i<=n; ++i)

{

cout << x[i] << " ";

}

}

}

void main()

{

MT a; VT x,y;

clrscr();

cout<<"\nNhap ma tran A:";

a.nhap();

cout<<"\n\nNhap Vec to X:\n";

Trang 5

y = a*x;

cout<<"\n\nMa tran A";

a.xuat();

cout<<"\n\nVec to X";

x.xuat();

cout<<"\n\nVec to Y=AX";

y.xuat();

getch();

}

Ngày đăng: 24/10/2013, 15:20

TỪ KHÓA LIÊN QUAN

w