Java - Xây dựng chương trình vẽ hình đơn giản.

Làm lại bài tập vẽ hình đơn giản trong bài Tính kế thừa trong Java và bổ sung thêm các yêu cầu sau:

  • Thực hiện lại 3 yêu cầu đầu tiên của bài.
  • Viết lớp Artist, lớp này có hàm drawShape(), hàm này không trả về giá trị và có một tham số kiểu Shape, trong hàm này gọi hàm draw() để vẽ hình tùy theo tham số Shape truyền vào.
  • Viết lớp ArtistDemo, lớp này chứa hàm main(): khai báo biến Shape; dùng biến này để khởi tạo cho đối tượng Rectangle với chiều dài là 8, chiều rộng là 4; tạo đối tượng Artist để vẽ hình chữ nhật này; dùng lại biến Shape để khởi tạo cho đối tượng RightTriangle với cạnh là 20, dùng đối tượng Artist để vẽ hình tam giác này.

Bài giải

-------------------- ######## --------------------

Shape.java
package baitapvehinh;

public class Shape {
	public void draw() {
		System.out.println("Drawing a Shape");
	}
}

Rectangle.java
package baitapvehinh;

public class Rectangle extends Shape {
	private int chieuDai, chieuRong;

	public Rectangle() {
		super();
	}

	public Rectangle(int chieuDai, int chieuRong) {
		super();
		if ((chieuDai < 1) || (chieuDai > 15)) {
			System.out.println("Giá trị của chiều dài phải nằm trong khoảng [1...15]");
			return;
		}
		
		if (chieuDai < chieuRong) {
			System.out.println("Chiều dài phải lớn hơn chiều rộng");
			return;
		}
		this.chieuDai = chieuDai;
		this.chieuRong = chieuRong;
	}

	public int getChieuDai() {
		return chieuDai;
	}

	public void setChieuDai(int chieuDai) {
		this.chieuDai = chieuDai;
	}

	public int getChieuRong() {
		return chieuRong;
	}

	public void setChieuRong(int chieuRong) {
		if ((chieuRong) < 1 || (chieuRong > 15)) {
			System.out.println("Giá trị của chiều rộng phải nằm trong khoảng [1...15]");
		}
		this.chieuRong = chieuRong;
	}
	
	public void draw() {
		// vẽ chiều rộng
		for (int i = 1; i <= chieuRong; i++) {
			// vẽ chiều dài
			for (int j = 1; j <= chieuDai; j++) {
				if ((j == 1) || (j == chieuDai) || (i == 1) || (i == chieuRong)) {
					System.out.print("*");
				} else {
					System.out.print(" ");
				}
			}
			System.out.println("\n");
		}
	}
}

RightTriangle.java
package baitapvehinh;

public class RightTriangle extends Shape {
	private int canhVuong, n;

	public RightTriangle() {
		super();
	}

	public RightTriangle(int canhVuong) {
		super();
		if ((canhVuong < 1) || (canhVuong > 20)) {
			System.out.println("Giá trị của cạnh phải nằm trong khoảng [1...20]");
			return;
		}
		this.canhVuong = canhVuong;
	}

	public int getCanhVuong() {
		return canhVuong;
	}

	public void setCanhVuong(int canhVuong) {
		this.canhVuong = canhVuong;
	}
	
	public void draw() {
		n = canhVuong;
		for (int i = 1; i <= canhVuong; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print("*");
			}

			System.out.println();
		}
	}
}

Artist.java
package baitapvehinh;

public class Artist {
	public void drawShape(Shape shape) {
		shape.draw();
	}
}

ArtistDemo.java
package baitapvehinh;

import java.util.Scanner;

public class ArtistDemo {

	public static void main(String[] args) {
		System.out.println("Vẽ hình chữ nhật có chiều dài = 8 và chiều rộng = 4");
		Shape shape = new Rectangle(8, 4);	// lúc này shape có vai trò là 1 Rectangle
		Artist artist = new Artist();
		artist.drawShape(shape);
		
		System.out.println("\nVẽ hình tam giác vuông có cạnh vuông = 20");
		shape = new RightTriangle(20);	// còn lúc này shape có vai trò là 1 RightTriangle
		artist = new Artist();
		artist.drawShape(shape);
	}

}

Kết quả sau khi biên dịch chương trình:

Trở thành Android Developer chuyên nghiệp với 30h học
Bạn muốn trở thành một nhà phát triển mobile app trên nền tảng Android? Vậy thì đây là khóa học rất phù hợp với bạn, chi phí rẻ, học online tại nhà.
XEM NGAY

Nguồn: freetuts.net