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
1776

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!