Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Một số chương trình hướng đối tượng trên C++
MIỄN PHÍ
Số trang
25
Kích thước
150.9 KB
Định dạng
PDF
Lượt xem
1612

Tài liệu đang bị lỗi

File tài liệu này hiện đang bị hỏng, chúng tôi đang cố gắng khắc phục.

Một số chương trình hướng đối tượng trên C++

Nội dung xem thử

Mô tả chi tiết

Chương 10

Một số chương trình hướng đối tượng trên C++

Chương này trình bầy thêm một số chương trình hướng đối

tượng trên C++. Đây là các chương trình tương đối phức tạp,

hữu ích và sử dụng các công cụ mạnh của C++ như: Cách

truy nhập trực tiếp bộ nhớ màn hình, kỹ thuật đồ hoạ, con trỏ

void, tính kế thừa, lớp cơ sở trừu tượng, tương ứng bội,

phương thức ảo.

§ 1. Lớp cửa sổ

Chương trình gồm lớp cua_so và lớp stack

+ Lớp cửa sổ

Thuộc tính gồm:

char *noidung; // Trỏ đến vùng nhớ chứa nội dung

// soạn thảo trên cửa sổ

int cao,rong ; // Chiều cao và chiều rộng cửa sổ

int mau; // mau = 16*mau_nen + mau_chu

int ra_mh; // Cho biết cửa sổ đã được đưa ra màn hình

chưa?

int posx,posy; // Vị trí trên trái của cửa sổ trên màn hình

word *pluu; // Trỏ đến vùng nhớ chứa nội dung

// phần màn hình bị cửa sổ đè lên

Phương thức gồm:

cua_so();

cua_so(int c,int r,byte mau_nen, byte mau_chu);

int push(int x,int y); // Đưa cửa sổ ra màn hình tại (x,y)

// cho phép soạn thảo trên cửa sổ

// Bấm F6 chuyển sang cửa sổ khác

// Bấm ESC kết thúc

void pop(); // Tháo gỡ cửa sổ và khôi phục màn hình

int get_ra_mh();

+ Lớp stack (dùng để quản lý một dẫy cửa sổ)

Thuộc tính gồm:

int max; //Số cửa sổ cực đại có thể quản lý

int num; //Số cửa sổ hiện có trong stack

cua_so **pcs; //Con trỏ trỏ đến vùng nhớ chứa

//địa chỉ của các đối tượng cua_so

Phương thức gồm:

stack();

stack(int max_cs);

int accept(cua_so *cs,int x,int y); //Đưa một cửa sổ

//vào stack, nó sẽ hiện lên màn

hình

void del(); // Loại cửa sổ khỏi stack, nó sẽ bị xoá

// khỏi màn hình

Nội dung chương trình:

+ Đầu tiên hiện cửa sổ thứ nhất nền GREEN chữa WHITE.

Có thể soạn thảo trên đó.

+ Nếu bấm ESC kết thúc chương trình, nếu bấm F6 thì hiện

thêm cửa sổ thứ hai nền CYAN chữ MAGENTA. Có thể soạn

thảo trên đó.

+ Nếu bấm ESC kết thúc chương trình, nếu bấm F6 thì hiện

thêm cửa sổ thứ ba nền RED chữ YELLOW. Có thể soạn thảo

trên đó.

+ Đang ở một cửa sổ, nếu bấm ESC thì kết thúc chương

trình, nếu bấm F6 thì hiện cửa sổ tiếp theo (theo thứ tự vòng

quanh: 1 -> 2 -> 3 -> 1).

504 505

Chương trình sử dụng phương pháp truy nhập trực tiếp bộ

nhớ màn hình trình bầy trong chương 9.

// CT10_01.CPP

// lop cua_so

#include <stdio.h>

#include <conio.h>

#include <dos.h>

#include <alloc.h>

typedef unsigned int word;

typedef unsigned char byte;

struct kt_word

{

word kt;

};

struct kt_byte

{

byte ma, mau;

};

union ky_tu

{

struct kt_byte h;

struct kt_word x;

};

typedef union ky_tu far *VP;

VP vptr=(VP)MK_FP(0xb800,0);

// Vi tri x,y tren man hinh

#define VPOS(x,y) (VP)(vptr + ((y)-1)*80+(x)-1)

class cua_so

{

private:

char *noidung;

int cao, rong;

int mau; // mau = 16*mau_nen + mau_chu

int ra_mh;

int posx,posy;

word *pluu;

public:

cua_so();

cua_so(int c,int r,byte mau_nen, byte mau_chu);

int push(int x,int y);

void pop();

int get_ra_mh();

};

cua_so::cua_so()

{

cao=rong=mau=ra_mh=posx=posy=0;

noidung=NULL; pluu=NULL;

}

cua_so::cua_so(int c,int r,byte mau_nen, byte mau_chu)

{

cao=c; rong=r;

mau= 16*mau_nen+mau_chu;

ra_mh=posx=posy=0;

noidung = (char*)malloc(cao*rong);

for (int i=0;i<cao*rong;++i)

noidung[i]=32;

pluu= (word*)malloc(2*cao*rong);

506 507

Tải ngay đi em, còn do dự, trời tối mất!