Mục lục chương I: ĐỐi tưỢng và LỚP



tải về 1.36 Mb.
trang11/28
Chuyển đổi dữ liệu21.12.2018
Kích1.36 Mb.
1   ...   7   8   9   10   11   12   13   14   ...   28

Nạp chồng phương thức

      1. Xây dựng lớp phanso và thao tác với lớp với các phương thức bao gồm:


  • Phương thức khởi tạo phân số có tử bằng 0 và mẫu bằng 1

  • Phương thức khởi tạo (int ts, int ms) để khởi tạo phân số có tử số bằng ts và mẫu số bằng ms

  • Phương thức nhập thông tin cho phân số

  • Phương thức cộng hai phân số

  • Phương thức cộng phân số với một số

  • Phương thức trừ hai phân số

  • Phương thức trư 1 phân số cho một số

  • Phương thức in kết quả ra màn hình

a, Hướng dẫn:

Thuộc tính của lớp: int ts,ms: tử số và mẫu số của phân số

Các phương thức của lớp:


  • Khởi tạo không tham số: pulic phanso() và gán giá trị của tử =0, mẫu số=1

  • Khởi tạo hai tham số: public phanso(int tu,int mau)

  • Cộng phân số với phân số

  • cộng phân số với một số

  • Trừ phân số cho phân số

  • Trừ phân số cho một số

  • Phương thức hiện kết quả lên màn hình

Vì trong bài này có nhiều phương thức chồng nhau (sự chồng phương thức) nên các bạn chú ý cách gọi các phương thức.

b, Bài giải mẫu:




using System;

using System.Collections.Generic;

using System.Text;

namespace phanso

{

class phanso

{

public int ts;

public int ms;

//ham thiet lap ko tham so



public phanso()

{

ts = 0;



ms = 1;

}

//phuong thuc thiet lap hai tham so



public phanso(int t, int m)

{

ts = t;



ms = m;

}

public void nhap()

{

Console.Write("nhap tu so:");



ts = Convert.ToInt32(Console.ReadLine());

Console.Write("nhap mau so:");

ms = Convert.ToInt32(Console.ReadLine());

}

private void cong(phanso a,phanso b)

{

phanso kq = new phanso();




kq.ts = a.ts * b.ms + a.ms * b.ts;

kq.ms =a.ms * b.ms;

Console.WriteLine("tong cua hai phan so la:{0}/{1}", kq.ts, kq.ms);

}

private void cong(phanso a, int c)

{

phanso kq = new phanso();



kq.ts = a.ts + a.ms * c;

kq.ms = a.ms ;

Console.WriteLine("{0}/{1}", kq.ts, kq.ms);

}

private void hieu(phanso a, phanso b)

{

phanso kq = new phanso();



kq.ts = a.ts * b.ms - a.ms * b.ts;

kq.ms = a.ms * b.ms;

Console.WriteLine(":{0}/{1}", kq.ts, kq.ms);

}

private void hieu(phanso a, int c)

{

phanso kq = new phanso();



kq.ts = a.ts - a.ms * c;

kq.ms = a.ms;

Console.WriteLine("{0}/{1}", kq.ts, kq.ms);

}

private void hien(phanso p)

{

Console.WriteLine("phan so:{0}/{1}",p.ts,p.ms);



}

class tester

{

static void Main(string[] args)

{

Console.WriteLine("goi phuong thuc thiet lap ko tham so:");



phanso R = new phanso(); R.hien(R);

phanso P = new phanso();

P.nhap(); P.hien(P);

phanso KQ = new phanso();

KQ.cong(R, P);

KQ.hieu(Q,P);

Console.WriteLine("nhap so c bat ki:");

int c;



c = Convert.ToInt32(Console.ReadLine());

Console.Write("tong cua phan so thu nhat voi c la:");

KQ.cong(P, c);

Console.Write("hieu cua phan so thu nhat voi c la:");

KQ.hieu(P, c);

Console.Write("tong cua phan so thu hai voi c la:");

KQ.cong(Q, c);

Console.ReadKey();

}

}

}



}

Kết quả sau khi chạy chương trình là:




goi phuong thuc thiet lap khong tham so:

phan so: 0/1

nhap P:

tu so = 5



mau so = 6

phan so : 5/6

nhap Q:

tu so = 3



mau so = 6

phan so: 3/6

tong cua P & Q la: 48/36

hieu cua P –Q la: -12/36

nhap so c bat ki: 8

tong cua P voi 8 la: 53/6

hieu cua P voi 8 la: -43/6

tich cua Q voi 8 la: 24/6


Trong ví dụ trên có tới 6 phương thức chồng nhau từng đôi một đó là hàm thiết lập không tham số public phanso() và hàm thiết lập hai tham số public phanso(int t, int m) dùng để khởi tạo các giá trị ban đầu cho biến đối tượng phân số; hai phương thức cộng (giữa hai phân số: private void cong(phanso a,phanso b), giữa phân số với một số private void cong(phanso a, int c)) và hai phương thức trừ (giữa phân số với một số private void hieu(phanso a, phanso b), giữa phân số và một số private void hieu(phanso a, int c)). Các phương thức trùng nhau về tên nhưng khác nhau về số lượng tham số, khác nhau về thành phần dữ liệu của từng đối số của phương thức. Ngoài ra thì chồng phương thức còn khác nhau về kiểu dữ liểu trả về của phương thức nữa. Tất nhiên là việc sử dụng chúng cần phải phân biệt rõ từng phương thức dựa vào sự khác nhau của từng phương thức. Nếu không thì sẽ phát sinh lỗi do trình biên dịch.


      1. Xây dựng một lớp vecto và hiện các phép toán trên vector


a, Hướng dẫn:

Thuộc tính:

- Cần cấp phát một vùng nhớ động để lưu các thành phần dữ liệu của một vecto.

Phương thức:



  • Phương thức khởi tạo

  • Phương thức sao chép

- Phưong thức tính tổng, hiệu, tích hai vecto (chú ý về phương thức trả ra giá trị )

  • Phương thức nhập, hiện vecto

b, Bài giải mẫu:


using System;

class vecto

{

//Khai bao mang v chua các thành phần tọa độ của vector



int[] v;

//Phuong thuc khoi tao khong tham so



public vecto()

{

v=new int[10];



}

public vecto(int n)// phuong thuc khoi co tham so khoi tao vecto n chieu

{

v=new int[n];



}

public double dodai()

{

return Math.Sqrt(this.tichvohuong(this));

}

public void nhap()

{

Console.WriteLine("nhap cac thanh phan cua vecto :");



for (int i = 0; i < v.Length; i++)

{

Console.Write("v[{0}]=", i + 1);



v[i] = int.Parse(Console.ReadLine());

}




}

// Cong hai vecto



public vecto cong(vecto u)

{

vecto tmp=new vecto(v.Length);



if (v.Length == u.v.Length)

for (int i = 0; i < v.Length; i++)

tmp.v[i] = v[i] + u.v[i];



else

Console.WriteLine("Khong thuc hien duoc phep cong vi hai vecto khong cung chieu");



return tmp;

}

public vecto hieu(vecto u)

{

vecto tmp = new vecto(v.Length);



if (v.Length == u.v.Length)

for (int i = 0; i < v.Length; i++)

tmp.v[i] = v[i] - u.v[i];



else

Console.WriteLine("Khong thuc hien duoc.Hai vecto khong cung chieu");



if (v.Length == u.v.Length)

for (int i = 0; i < v.Length; i++)

tmp.v[i] = v[i] + u.v[i];



else

Console.WriteLine("Khong thuc hien duoc phep cong vi hai vecto khong cung chieu");



return tmp;

}

public vecto hieu(vecto u)

{

vecto tmp = new vecto(v.Length);



if (v.Length == u.v.Length)

for (int i = 0; i < v.Length; i++)

tmp.v[i] = v[i] - u.v[i];



else

Console.WriteLine("Khong thuc hien duoc.Hai vecto khong cung chieu");



return tmp;

}

public vecto tich(int k)





{

vecto tmp = new vecto(v.Length);



for (int i = 0; i < v.Length; i++)

tmp.v[i] = v[i] * k;



return tmp;

}

public bool vuonggoc(vecto a)

{

return (this.tichvohuong(a) == 0);

}

// Tich vo huong hai vecto



public int tichvohuong(vecto u)

{

int tmp = 0;



if (v.Length == u.v.Length)

for (int i = 0; i < v.Length; i++)

tmp = tmp + v[i] * u.v[i];



else

Console.WriteLine("Khong thuc hien duoc.Hai vecto khong cung chieu");



return tmp;

}

}



public void print(vecto c)

{

Console.Write("(");



for (int i = 0; i < v.Length; i++)

if (i == v.Length - 1)

Console.Write("{0}", v[i]);



else

Console.Write("{0},",v[i]);

Console.WriteLine(")");

}

}


class Tester

{

static void Main()

{

vecto A= new vecto(3);



vecto B= new vecto(3);

vecto S;




int k;

A.nhap();

B.nhap();

Console.Write("vecto A"); A.print(A);

Console.WriteLine("Do dai = {0}", A.dodai());

Console.Write("vecto B"); B.print(B);

Console.WriteLine("Do dai = {0}", B.dodai());

if (A.vuonggoc(B) == true)

Console.Write("Hai vec to vuong goc");



else

Console.WriteLine("Hai vecto khong vuong goc !");

Console.Write("Tong hai vecto la:");

S = A.cong(B);

Console.Write(" S = "); S.print(S);

Console.Write("Hieu hai vecto la:");

S = A.hieu(B);

Console.Write("S = "); S.print(S);

Console.WriteLine("Tich vo huong cua hai vecto: S = {0}", A.tichvohuong(B));

Console.Write("Ban hay nhap vao mot so k =");

k = int.Parse(Console.ReadLine());

Console.Write("Tich cua vecto A voi k la:");

S = A.tich(k);

Console.Write("S = "); S.print(S);

Console.Write("Tich cua vecto B voi k la:");

S = B.tich(k);

Console.Write("S = "); S.print(S);

Console.ReadKey();

}

}



Kết quả sau khi chạy chương trình:


Nhap cac thanh phan cua vecto

V[1]=4


V[2]=7

V[3]=6


Vecto A(4,7,6)

Do dai = 10,0498756211209

Nhap cac thanh phan cua vecto

V[1]=1


V[2]=0

V[3]=9




Vecto B(1,0,9)

Do dai = 9.05538513813742

Hai vecto khong vuong goc

Tong cua hai vecto la: S=(5,7,15);

Hieu cua hai vecto la: S=(3,7,-3)

Tich vo huong cua hai vecto la: S=58

Ban hay nhap vao so k: 3

Tich cua A voi k la: S=(12,21,18)

Tich cua B voi k la: S=(3,0,27)





    1. Поделитесь с Вашими друзьями:
1   ...   7   8   9   10   11   12   13   14   ...   28


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©tieuluan.info 2019
được sử dụng cho việc quản lý

    Quê hương