Bài thực hành buổi 4 Môn: Lập Trình Hướng Đối Tượng GV: Lê Thị Thu Lan

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

default Bài thực hành buổi 4 Môn: Lập Trình Hướng Đối Tượng GV: Lê Thị Thu Lan

Bài gửi by augustion_ptn on Mon Sep 26, 2011 8:29 pm

1. Hàm xây dựng gán giá trị ban đầu cho một đối tượng ngay khi khai báo
Khái báo CLASS PhanSo(thuộc tính: x,y; phương thức: nhaptt, intt) mô tả phân số x/y. Định nghĩa hàm xây dựng cho các trường hợp
o Nếu khi khai báo đối tượng không có truyền tham số, giá trị ban đầu x=0,y=1
o Khai báo đối tượng có truyền một tham số a: x=a, y=1
o Khai báo đối tượng có truyền 2 tham số a,b: x=a, y=b
Code:
#include<conio.h>
#include<stdio.h>
#include<iostream>
using namespace std;
class phanso
{
      private:
              int x;
              int y;
      public:
            phanso();
            phanso(int);
            phanso(int,int);
            void hien(char* = "");
};
phanso::phanso()
{
      x=0;y=1;
};
phanso::phanso(int a)
{
      x=a; y=1;
};
phanso::phanso(int a, int b)
{
      x=a; y=b;     
};
void phanso::hien(char* str)
{
      cout<<str;
      cout<<x<<"/"<<y;
};
int main()
{
      phanso a, b(5), c(5,6);
      a.hien("\nPhan so cua A la: ");
      b.hien("\nPhan so cua B la: ");
      c.hien("\nPhan so cua C la: ");
      getch();
}
Khái báo CLASS SinhVien, có thuộc tính là con trỏ hoten
Code:
#include<conio.h>
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
class sinhvien
{
      private:
              char ms[10];
              char* hoten;
              int namsinh;
              float diemtb;
      public:
              sinhvien();
              sinhvien(char*,char*,int,float);
              void nhap(char* = "");
              void in(char* = "");
};
sinhvien::sinhvien()
{
      strcpy(ms,""); //string copy
      hoten=new char[50]; //Cap phat vung nho cho con tro sring
      strcpy(hoten,"");
      namsinh=1980;
      diemtb=0;
};
sinhvien::sinhvien(char* m,char* t,int ns,float d)
{
      strcpy(ms,m);
      hoten=new char[50]; //Cap phat vung nho cho con tro String
      strcpy(hoten,t);
      namsinh=ns;
      diemtb=d;
};
void sinhvien::nhap(char* str)
{
      cout<<str;
      cout<<"\nMa sinh vien: ";
      cin>>ms;
      cout<<"\nTen Sinh Vien: ";
      cin.ignore();
      cin.getline(hoten,50); //Lay nguyen dong ten, cho phep nhap khoang trang
      cout<<"\nNam sinh: ";
      cin>>namsinh;
      cout<<"\nDiem TB: ";
      cin>>diemtb;
};
void sinhvien::in(char* str)
{
      cout<<str;
      cout<<"\nMa so: "<<ms<<"\nHo Ten: "<<hoten<<"\nNam Sinh: "<<namsinh<<"\nDiem TB: "<<diemtb;
};
int main()
{
      sinhvien a;
      a.in("\nSinh vien 1: ");
      sinhvien b("01","Nguyen Van An",1990,8.5);
      b.in("\nSinh vien 2: ");
      sinhvien c;
      c.nhap("\nNhap TT sinh vien 3: ");
      c.in("Thong tin sinh vien vua nhap: ");
      getch();
}     
2. Hàm hủy: thu hồi vùng nhớ đã cấp cho con trỏ là dữ liệu thành viên (được tự động gọi khi hệ thống muốn hủy một biến)
Code:
#include<conio.h>
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
class sinhvien
{
      private:
              char ms[10];
              char* hoten;
              int namsinh;
              float diemtb;
      public:
              sinhvien();
              sinhvien(char*,char*,int,float);
              void nhap(char* = "");
              void in(char* = "");
              ~sinhvien();
};
sinhvien::~sinhvien()
{
      delete[]hoten;
}
sinhvien::sinhvien()
{
      strcpy(ms,""); //string copy
      hoten=new char[50]; //Cap phat vung nho cho con tro sring
      strcpy(hoten,"");
      namsinh=1980;
      diemtb=0;
};
sinhvien::sinhvien(char* m,char* t,int ns,float d)
{
      strcpy(ms,m);
      hoten=new char[50]; //Cap phat vung nho cho con tro String
      strcpy(hoten,t);
      namsinh=ns;
      diemtb=d;
};
void sinhvien::nhap(char* str)
{
      cout<<str;
      cout<<"\nMa sinh vien: ";
      cin>>ms;
      cout<<"\nTen Sinh Vien: ";
      cin.ignore();
      cin.getline(hoten,50); //Lay nguyen dong ten, cho phep nhap khoang trang
      cout<<"\nNam sinh: ";
      cin>>namsinh;
      cout<<"\nDiem TB: ";
      cin>>diemtb;
};
void sinhvien::in(char* str)
{
      cout<<str;
      cout<<"\nMa so: "<<ms<<"\nHo Ten: "<<hoten<<"\nNam Sinh: "<<namsinh<<"\nDiem TB: "<<diemtb;
};
int main()
{
      sinhvien a;
      a.in("\nSinh vien 1: ");
      sinhvien b("01","Nguyen Van An",1990,8.5);
      b.in("\nSinh vien 2: ");
      sinhvien c;
      c.nhap("\nNhap TT sinh vien 3: ");
      c.in("Thong tin sinh vien vua nhap: ");
      getch();
}     
3. Hàm xây dựng sao chép: để khởi tạo một đối tượng giống đối tượng khác (copy dữ liệu dạng con trỏ của đối tượng cũ sang vùng nhớ của đối tượng mới)
Dựng hàm xây dựng sao chép cho CLASS SinhVien
Code:
#include<conio.h>
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
class sinhvien
{
      private:
              char ms[10];
              char* hoten;
              int namsinh;
              float diemtb;
      public:
              sinhvien();
              sinhvien(char*,char*,int,float);
              void nhap(char* = "");
              void in(char* = "");
              ~sinhvien();
              sinhvien(const sinhvien&);
};
sinhvien::sinhvien(const sinhvien& s)
{
      strcpy(ms,s.ms);
      hoten=new char[50];
      strcpy(hoten,s.hoten); //Copy du lieu dang con tro cua doi tuong cu s sang doi tuong khoi tao
      namsinh=s.namsinh;
      diemtb=s.diemtb;
};
sinhvien::~sinhvien()
{
      delete[]hoten;
}
sinhvien::sinhvien()
{
      strcpy(ms,""); //string copy
      hoten=new char[50]; //Cap phat vung nho cho con tro sring
      strcpy(hoten,"");
      namsinh=1980;
      diemtb=0;
};
sinhvien::sinhvien(char* m,char* t,int ns,float d)
{
      strcpy(ms,m);
      hoten=new char[50]; //Cap phat vung nho cho con tro String
      strcpy(hoten,t);
      namsinh=ns;
      diemtb=d;
};
void sinhvien::nhap(char* str)
{
      cout<<str;
      cout<<"\nMa sinh vien: ";
      cin>>ms;
      cout<<"\nTen Sinh Vien: ";
      cin.ignore();
      cin.getline(hoten,50); //Lay nguyen dong ten, cho phep nhap khoang trang
      cout<<"\nNam sinh: ";
      cin>>namsinh;
      cout<<"\nDiem TB: ";
      cin>>diemtb;
};
void sinhvien::in(char* str)
{
      cout<<str;
      cout<<"\nMa so: "<<ms<<"\nHo Ten: "<<hoten<<"\nNam Sinh: "<<namsinh<<"\nDiem TB: "<<diemtb;
};
int main()
{
      sinhvien a;
      a.nhap("\nNhap TT sinh vien A: ");
      a.in("\n\nSinh vien A: ");
      sinhvien b;
      b=a;
      b.in("\n\nSinh vien B=A: ");
      sinhvien c(a);
      c.in("\n\nThong sinh vien C sao chep tu A: ");
      a.nhap("\n\nDoi TT sinh vien A: ");
      b.in("\nThong tin sinh vien B=A: ");
      c.in("\nTT sinh vien C sao chep tu A: ");
      getch();
}     
4. Thuộc tính của một lớp là một đối tượng
Dựng Class Diem, dựng Class DuongTron trong đó tận dụng lại Class Diem để chưa thông tin tâm của đường tròn
Code:
#include<conio.h>
#include<stdio.h>
#include<iostream>
using namespace std;
class diem
{
      private:
              int x;
              int y;
      public:
            diem();
            diem(int);
            diem(int,int);
            void nhaptt();
            void in();
            void doidiem(int, int);
};
diem::diem()
{
      x=y=0;
};
diem::diem(int a)
{
      x=y=a;
};
diem::diem(int x1, int y1)
{
      x=x1; y=y1;     
};
void diem::nhaptt()
{
      cout<<"x = "; cin>>x;
      cout<<"y = "; cin>>y;
};
void diem::in()
{
      cout<<"("<<x<<","<<y<<")";
};
void diem::doidiem(int x1, int y1)
{
      x=x1;y=y1;
};
class duongtron
{
      diem tam;
      int r;
      public:
            duongtron(); //Dung duong tron khong co thong tin ban dau
            duongtron(diem,int);//Dung duong tron voi tam la mot diem va ban kinh xac dinh
            duongtron(int,int,int); //Dung duong tron voi toa do Tam vaf Ban Kinh xac dinh
            duongtron(const duongtron&);//Sao chep thong tin tu mot duong tron khac
            void ve();
            void nhap();
            void doidiem(int,int);//Doi Tam duong tron
};
/*Goi kem ham xay dung Diem khi dinh nghia ham xay
dung duong tron vi diem day la tam cua duong tron*/
duongtron::duongtron():tam()//Tam la diem chua xac dinh
{r=0;}
duongtron::duongtron(diem d,int bk):tam(d)//Tam la diem d
{r=bk;}
duongtron::duongtron(int x,int y,int bk):tam(x,y)//Tam la diem co toa do x,y
{r=bk;}
duongtron::duongtron(const duongtron& d):tam(d.tam)//Tam la tam cua mot duong tron d khac
{r=d.r;}
void duongtron::ve()
{
    cout<<"Tam: ";
    tam.in();
    cout<<endl;
    cout<<"Ban Kinh: "<<r<<endl;
};
void duongtron::nhap()
{
    cout<<"Nhap Tam: "<<endl;
    tam.nhaptt();
    cout<<"Nhap ban kinh: ";
    cin>>r;
};
int main()
{
    duongtron a;
    a.nhap();
    a.ve();
    getch();
}
Dựng Class SinhVien, dựng Class LopHoc trong đó có mã lớp, tên lớp, niên khóa, danh sách sinh viên nắm thông tin của từng sinh viên trong lớp như class SinhVien
Code:
#include<conio.h>
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
class sinhvien
{
      private:
              char ms[10];
              char* hoten;
              int namsinh;
              float diemtb;
      public:
              sinhvien();
              sinhvien(char*,char*,int,float);
              void nhap(char* = "");
              void in(char* = "");
};
sinhvien::sinhvien()
{
      strcpy(ms,""); //string copy
      hoten=new char[50]; //Cap phat vung nho cho con tro sring
      strcpy(hoten,"");
      namsinh=1980;
      diemtb=0;
};
sinhvien::sinhvien(char* m,char* t,int ns,float d)
{
      strcpy(ms,m);
      hoten=new char[50]; //Cap phat vung nho cho con tro String
      strcpy(hoten,t);
      namsinh=ns;
      diemtb=d;
};
void sinhvien::nhap(char* str)
{
    cout<<str;
      cout<<"\nMa sinh vien: ";
      cin>>ms;
      cout<<"\nTen Sinh Vien: ";
      cin.ignore();
      cin.getline(hoten,50); //Lay nguyen dong ten, cho phep nhap khoang trang
      cout<<"\nNam sinh: ";
      cin>>namsinh;
      cout<<"\nDiem TB: ";
      cin>>diemtb;
};
void sinhvien::in(char* str)
{
      cout<<str;
      cout<<"\nMa so: "<<ms<<"\nHo Ten: "<<hoten<<"\nNam Sinh: "<<namsinh<<"\nDiem TB: "<<diemtb;
};
class lophoc
{
      private:
              char malop[10];
              char* tenlop;
              char nienkhoa[9];
              int slsv;
              sinhvien* dssv[200];//Toi da 200 SV cho 1 lop
      public:
            lophoc();
            void nhap();
            void in();       
};
lophoc::lophoc()
{
      strcpy(malop,"");
      tenlop=new char[50];
      strcpy(nienkhoa,"");
      slsv=0;
//dssv: mang con tro, con tro nay se duoc cap phat vung nho khi co sinh vien cu the
}
void lophoc::nhap()
{
    cout<<"\nMa lop hoc: ";
    cin>>malop;
    cout<<"\nTen lop hoc: ";
    cin.ignore();
    cin.getline(tenlop,49);//Lay nguyen dong cho phep nhap khoang trang
    cout<<"\nNien khoa: ";
    cin>>nienkhoa;
    cout<<"\nSo luong sinh vien: ";
    cin>>slsv;
    for(int i=0;i<slsv;i++)
    {
/*Do so luong sinh vien tung lop khac nhau nen viec
cap phat vung nho se thuc hien truoc khi cap nhat
thong tin 1 sinh vien cu the*/
      dssv[i]=new sinhvien();
      dssv[i]->nhap();
    }
};
void lophoc::in()
{
      cout<<"\nLop: "<<malop<<". Ten lop: "<<tenlop<<"("<<nienkhoa<<")"<<". So luong sinh vien: "<<slsv;
      cout<<"\nDanh sach sinh vien cua lop: ";
      for(int i=0;i<slsv;i++)
      {
            dssv[i]->in();
      }
};
int main()
{
      lophoc a;
      a.nhap();
      a.in();
      getch();
}     
     
5. Mở rộng bài tập quản lý phòng học
Quản lý thông tin trường gồm mã trường, tên trường, địa chỉ, danh sách phòng học và thông tin kèm theo để giới thiệu cơ sở vật chất của trường
Số lượng lượng phòng của từng trường do người dùng nhập
Dựng chương trình cho phép nhập n trường, in danh sách trường và phòng học kèm theo
Áp dụng hàm khởi tạo, hủy cho các mảng động, thuôc tính danh sách phòng học của trường là đối tượng phòng

augustion_ptn

Posts : 634
Thanked : 100
Gia Nhập 27/08/2010

Tài Sản
Thú nuôi:

http://thanhnhancomputer.freevnn.com

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết