1. Trang chủ
  2. » Công Nghệ Thông Tin

BÀI 3: HƯỚNG ĐỐI TƯỢNG TRONG JAVA pptx

54 644 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 54
Dung lượng 385,5 KB

Nội dung

TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN TP.HCM NHẬP MÔN JAVA BÀI HƯỚNG ĐỐI TƯỢNG GIẢNG VIÊN: VÕ TẤN DŨNG GV: Võ Tấn Dũng TRONG JAVA MỞ ĐẦU GV: Võ Tấn Dũng • Từ đời lập trình hướng đối tượng (OOP) chứng tỏ sức mạnh, vai trị đề án tin học • Lập trình OOP phương pháp mạnh mẽ hiệu để xây dựng nên chương trình ứng dụng máy tính • Ở phần tìm hiểu vấn đề lập trình hướng đối tượng Java thông qua việc tạo lớp, đối tượng tính chất chúng PHẦN LỚP GV: Võ Tấn Dũng (CLASS) KHÁI NIỆM LỚP (CLASS) GV: Võ Tấn Dũng • Lớp xem khn mẫu (template) đối tượng (Object) • Trong lớp bao gồm thuộc tính đối tượng (properties) phương thức (methods) tác động lên thuộc tính • Đối tượng xây dựng từ lớp nên gọi thể lớp (class instance) KHAI BÁO LỚP • • • • • class: từ khóa java ClassName: tên đặt cho lớp field_1, field_2: thuộc tính (các biến, hay thành phần liệu lớp) constructor: phương thức xây dựng, khởi tạo đối tượng lớp method_1, method_2: phương thức (có thể gọi hàm) thể thao tác xử lý, tác động lên thuộc tính lớp GV: Võ Tấn Dũng class { ; ; constructor method_1 method_2 } THUỘC TÍNH CỦA LỚP • Vùng liệu (fields) hay thuộc tính (properties) lớp khai báo bên lớp sau: class { // khai báo thuộc tính lớp field1; // … } Để xác định quyền truy xuất đối tượng khác vùng liệu lớp người ta thường dùng tiền tố sau: – public: truy xuất từ tất đối tượng khác – private: lớp truy xuất vùng private lớp khác – protected: vùng protected lớp cho phép thân lớp lớp dẫn xuất từ lớp truy cập đến GV: Võ Tấn Dũng • THUỘC TÍNH CỦA LỚP • • • public class xemay { public String nhasx; public String model; private float chiphisx; protected int thoigiansx; // so luong so cua xe may: 3, protected int so; // sobanhxe biến tĩnh có giá trị tất // thể tạo từ lớp xemay public static int sobanhxe = 2; } Thuộc tính “nhasx”, “model” truy cập đến từ tất đối tượng khác Thuộc tính “chiphisx” truy cập từ đối tượng có kiểu “xemay” Thuộc tính “thoigiansx”, so truy cập từ đối tượng có kiểu “xemay” đối tượng lớp dẫn xuất từ lớp “xemay” GV: Võ Tấn Dũng Ví dụ: THUỘC TÍNH CỦA LỚP GV: Võ Tấn Dũng Lưu ý: • Thơng thường để an toàn cho vùng liệu đối tượng người ta tránh dùng tiền tố public, mà thường chọn tiền tố private để ngăn cản quyền truy cập đến vùng liệu lớp từ phương thức bên ngồi lớp PHƯƠNG THỨC (METHOD) CỦA LỚP • Hàm hay phương thức (method) Java khối lệnh thực chức năng, hành vi xử lý lớp lên vùng liệu Khai báo phương thức: () { ; } Để xác định quyền truy xuất đối tượng khác phương thức lớp người ta thường dùng tiền tố sau: public, protected, private, static, final, abstract, synchronized – : kiểu void, kiểu sở hay lớp – : đặt theo qui ước giống tên biến – : rỗng GV: Võ Tấn Dũng • PHƯƠNG THỨC (METHOD) CỦA LỚP • • • • • public: phương thức truy cập từ bên ngồi lớp khai báo protected: truy cập từ lớp khai báo lớp dẫn xuất từ private: truy cập bên thân lớp khai báo static: phương thức lớp dùng chung cho tất thể lớp, có nghĩa phương thức thực kể khơng có đối tượng lớp chứa phương thức final: phương thức có tiền tố khơng khai báo chồng lớp dẫn xuất abstract: phương thức khơng cần cài đặt (khơng có phần source code), thực lớp dẫn xuất từ lớp synchoronized: dùng để ngăn tác động đối tượng khác lên đối tượng xét đồng hóa Dùng lập trình miltithreads 10 GV: Võ Tấn Dũng • • VÍ DỤ 1: VỀ TÍNH ĐA HÌNH (lớp Cylinder) public class Cylinder extends Circle { protected double height; // chiều cao Cylinder public Cylinder() // constructor khơng có tham số { // ngầm gọi đến constructor lớp cha setHeight( ); } // constructor có tham số public Cylinder( double cylinderHeight, double cylinderRadius, int xCoordinate,int yCoordinate ) { // Gọi constructor lớp cha super( cylinderRadius, xCoordinate, yCoordinate ); setHeight( cylinderHeight ); } //còn tiếp slide sau 40 GV: Võ Tấn Dũng Định nghĩa lớp Cylinder tập tin Cylinder.java Lớp Cylinder thừa kế từ lớp Circle VD1: VỀ TÍNH ĐA HÌNH (lớp Cylinder-tt) public String getName() // trả tên shape { return "Cylinder"; } } // end class Cylinder 41 GV: Võ Tấn Dũng public void setHeight( double cylinderHeight ) { // Gán chiều cao cho Cylinder height = ( cylinderHeight >= ? cylinderHeight:0 ); } public double getHeight() // Lấy chiều cao Cylinder { return height; } public double area() // Tính diện tích xung quanh Cylinder { return * super.area() + * Math.PI * radius *height; } public double volume() // Tính thể tích Cylinder { return super.area() * height;} public String toString() // Biểu diễn Cylinder chuỗi { return super.toString() + "; Height = " + height; } GIẢI THÍCH (lớp Cylinder) 42 GV: Võ Tấn Dũng • Lớp Cylinder dẫn xuất từ lớp Circle Một Cylinder (hình trụ) có diện tích thể tích khác với Circle (hình trịn), hai phương thức area() volume() cần phải khai báo chồng • Phương thức getName() thực phương thức trừu tượng lớp cha, phương thức getName() không khai báo lớp Cylinder kế thừa từ lớp Circle • Phương thức setHeight dùng để gán chiều cao cho đối tượng hình trụ • Cịn phương thức getHeight trả chiều cao đối tượng hình trụ VÍ DỤ 1: VỀ TÍNH ĐA HÌNH (test) import java.text.DecimalFormat; public class Test { // Kiểm tra tính kế thừa đối tượng hình học public static void main( String args[] ) { // Tạo đối tượng hìnhhọc Point point = new Point( 7, 11 ); Circle circle = new Circle( 3.5, 22, ); Cylinder cylinder = new Cylinder( 10, 3.3, 10, 10 ); // Tạo mảng đối tượng hình học Shape arrayOfShapes[] = new Shape[ ]; // arrayOfShapes[ ] đối tượng Point arrayOfShapes[ ] = point; // arrayOfShapes[ ] đối tượng Circle arrayOfShapes[ ] = circle; // arrayOfShapes[ ] đối tượng cylinder arrayOfShapes[ ] = cylinder; //còn tiếp slide sau 43 GV: Võ Tấn Dũng File Test.java dùng để kiểm tra tính kế thừa Point, Circle, Cylinder với lớp trừu tượng Shape // Lấy tên biểu diễn đối tượng hình học String output = point.getName() + ": " + point.toString() + "\n" + circle.getName() + ": " + circle.toString() + "\n" + cylinder.getName() + ": " + cylinder.toString(); DecimalFormat precision2 = new DecimalFormat("0.00" ); // duyệt mảng arrayOfShapes lấy tên, diện tích, thể tích // đối tượng hình học mảng for ( int i = 0; i < arrayOfShapes.length; i++ ) { output += "\n\n" + arrayOfShapes[ i ].getName() +": " + arrayOfShapes[ i].toString() +"\n Area = " + precision2.format( arrayOfShapes[ i ].area() ) +"\nVolume = " + precision2.format( arrayOfShapes[ i ].volume() ); } System.out.println(output); System.exit( ); } } // end class Test 44 GV: Võ Tấn Dũng VÍ DỤ 1: VỀ TÍNH ĐA HÌNH (test - tt) VD2: VỀ TÍNH ĐA HÌNH (interface Shape) Tương tự ví dụ ví dụ dùng interface để định nghĩa cho Shape thay lớp trừu tượng Vì tất phương thức tron interface Shape phải thực lớp Point lớp cài đặt trực tiếp interface Shape 45 GV: Võ Tấn Dũng // Định nghĩa interface Shape tập tin shape.java public interface Shape { // Tính diện tích public abstract double area(); // Tính thể tích public abstract double volume(); // trả tên shape public abstract String getName(); } VD2: VỀ TÍNH ĐA HÌNH (lớp Point) public class Point extends Object implements Shape { protected int x, y; // Tọa độ x, y điểm public Point() // constructor không tham số { setPoint( 0, ); } public Point(int xCoordinate, int yCoordinate) // constructor có tham số { setPoint( xCoordinate, yCoordinate ); } public void setPoint( int xCoordinate, int yCoordinate ) // gán tọa độ x, y cho điểm { x = xCoordinate; y = yCoordinate; } //còn tiếp slide sau 46 GV: Võ Tấn Dũng Lớp Point cài đặt, thực interface tên shape Định nghĩa lớp Point tập tin Point.java VD2: VỀ TÍNH ĐA HÌNH (lớp Point - tt) 47 GV: Võ Tấn Dũng // lấy tọa độ x điểm public int getX() { return x; } public int getY() // lấy tọa độ y điểm { return y; } public String toString() // Thể tọa độ điểm dạng chuỗi { return "[" + x + ", " + y + "]"; } public double area() // Tính diện tích { return 0.0; } public double volume() // Tính thể tích { return 0.0; } public String getName() // trả tên đối tượng shape { return "Point"; } } // end class Point VD2: VỀ TÍNH ĐA HÌNH (lớp Circle) public class Circle extends Point { // Dẫn xuất từ lớpPoint protected double radius; public Circle() // constructor không tham số { // ngầm gọi đến constructor lớp cha setRadius( ); } // constructor có tham số public Circle( double circleRadius, int xCoordinate, int yCoordinate ) { // gọi constructorcủa lớp cha super( xCoordinate, yCoordinate ); setRadius( circleRadius ); } //còn tiếp slide sau 48 GV: Võ Tấn Dũng Lớp Circle lớp lớp Point, cài đặt/hiện thực gián tiếp interface tên shape Định nghĩa lớp Circle tập tin Circle.java public void setRadius( double circleRadius ) // Gán bán kính đường tròn { radius = ( circleRadius >= ? circleRadius:0 ); } public double getRadius() // Lấy bán kính đường tròn { return radius; } public double area() // Tính diện tích đường trịn Circle { return Math.PI * radius * radius; } public String toString() // Biểu diễn đường tròn chuỗi { return "Center = " + super.toString() + "; Radius = " + radius; } // trả tên shape public String getName() { return "Circle"; } } // end class Circle 49 GV: Võ Tấn Dũng VD2: VỀ TÍNH ĐA HÌNH (lớp Circle - tt) VD2: VỀ TÍNH ĐA HÌNH (lớp Cylinder) public class Cylinder extends Circle { protected double height; // chiều cao Cylinder public Cylinder() // constructor khơng có tham số { // ngầm gọi đến constructor lớp cha setHeight( ); } // constructor có tham số public Cylinder( double cylinderHeight, double cylinderRadius, int xCoordinate,int yCoordinate ) { // Gọi constructor lớp cha super( cylinderRadius, xCoordinate,yCoordinate ); setHeight( cylinderHeight ); } public void setHeight( double cylinderHeight ) // Gán chiều cao cho Cylinder { height = ( cylinderHeight >= ? cylinderHeight:0 ); } //còn tiếp slide sau 50 GV: Võ Tấn Dũng Định nghĩa lớp hình trụ Cylinder tập tin Cylinder.java public double getHeight() // Lấy chiều cao Cylinder { return height; } public double area() // Tính diện tích xung quanh Cylinder { return * super.area() + * Math.PI * radius * height; } public double volume() // Tính thể tích Cylinder { return super.area() * height; } public String toString() // Biểu diễn Cylinder chuỗi { return super.toString() + "; Height = " + height; } // trả tên shape public String getName() { return "Cylinder"; } } // end class Cylinder 51 GV: Võ Tấn Dũng VD2: VỀ TÍNH ĐA HÌNH (lớp Cylinder-tt) VD2: VỀ TÍNH ĐA HÌNH (test) import java.text.DecimalFormat; public class Test // Kiểm tra tính kế thừa đối tượng hình học { public static void main( String args[] ) { // Tạo đối tượng hìnhhọc Point point = new Point( 7, 11 ); Circle circle = new Circle( 3.5, 22, ); Cylinder cylinder = new Cylinder( 10, 3.3, 10, 10 ); Shape arrayOfShapes[] = new Shape[ ]; // Tạo mảng đối tượng hình học // arrayOfShapes[ ] đối tượng Point arrayOfShapes[ ] = point; arrayOfShapes[ ] = circle; // arrayOfShapes[ ] đối tượng Circle arrayOfShapes[ ] = cylinder; // arrayOfShapes[ ] đối tượng cylinder // Lấy tên biểu diễn đối tượng hình học String output = point.getName() + ": " + point.toString() + "\n" + circle.getName() + ": " + circle.toString() + "\n“ + cylinder.getName() + ": " + cylinder.toString(); DecimalFormat precision2 = new DecimalFormat("0.00" ); //còn tiếp slide sau 52 GV: Võ Tấn Dũng Tập tin Test.java để kiểm tra tính kế thừa Point, Circle, Cylinder với interface Shape VD2: VỀ TÍNH ĐA HÌNH (test - tt) // duyệt mảng arrayOfShapes lấy tên, diện tích, thể tích // đối tượng hình học mảng for ( int i = 0; i < arrayOfShapes.length; i++ ) { output += "\n\n" + arrayOfShapes[ i ].getName() + ": " + arrayOfShapes[ i].toString() + "\n Area = " + precision2.format( arrayOfShapes[ i ].area() ) + "\nVolume = " + precision2.format( arrayOfShapes[ i ].volume() ); } System.out.println(output); System.exit( ); 53 GV: Võ Tấn Dũng } } // end class Test GV: Võ Tấn Dũng HẾT CHƯƠNG ... PHẦN GV: Võ Tấn Dũng ĐẶC ĐIỂM HƯỚNG ĐỐI TƯỢNG TRONG JAVA ĐẶC ĐIỂM OOP TRONG JAVA Để hỗ trợ nguyên tắc lập trình hướng đối Tượng (OOP), tất ngơn ngữ lập trình OOP, kể Java có ba đặc điểm chung: 17... ngơn ngữ java class Một class định nghĩa hình thức đối tượng Một class định rõ thành phần liệu đoạn mã cài đặt thao tác xử lý đối tượng liệu Java dùng class để xây dựng đối tượng Những đối tượng. .. chế đóng gói lập trình hướng đối tượng giúp cho đối tượng giấu phần chi tiết cài đặt, phần liệu cục nó, cơng bố ngồi cần cơng bố để trao đổi với đối tượng khác Hay nói đối tượng thành tố hỗ trợ

Ngày đăng: 07/07/2014, 11:20

TỪ KHÓA LIÊN QUAN