Bài giảng lập trình hướng đối tượng với Java

79 92 0
Bài giảng lập trình hướng đối tượng với Java

Đ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

Đây là bài giảng lập trình hướng đối tượng với Java, được thể hiện qua các bài ví dụ cụ thể... Lớp là khái niệm dùng để mô tả tập hợp các các đối tượng có cùng một cấu trúc, cùng hành vi và có cùng mối quan hệ với các đối tượng khác.

1 MỤC LỤC CHƯƠNG 1: GIỚI THIỆU VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 1.1 Các phương pháp tiếp cận lập trình Để phát triển hệ thống phần mềm, ta có hai cách tiếp cận là: 1) Cách tiếp cận hướng chức – Function Oriented 2) Cách tiếp cận hướng đối tượng (Object Oriented) => Ta cần phân biệt đặc trưng nhất, đánh giá mặt mạnh, mặt yếu phương pháp để hiểu rõ chúng áp dụng chúng cách hiệu 1.1.1.Lập trình hướng chức (thủ tục) Trọng tâm cách tiếp cận hàm chức Chức toán thành chức đơn giản thực làm mịn dần từ xuống ( topdown) Cấu trúc chương trình xây dựng theo cách tiếp cận hướng chức có dạng Hình H1-1 Chương trình main() Hàm_1 Hàm_2 Hàm_4 Hàm_7 Hàm_3 Hàm_5 Hàm_8 Hàm_6 Hàm_9 Hình H1-1 Cấu trúc chương trình hướng chức  Kỹ thuật phân rã chức (hàm) theo cách tiếp cận top-down để tạo cấu trúc phân cấp  Chương trình xây dựng theo cách tiếp cận hướng chức thực chất tập chương trình  chương trình =Cấu trúc liệu+giải thuật *Ưu điểm -Thuận tiện cho việc thiết kế liệu nắm bắt thông tin -Phù hợp với toán vừa nhỏ *Nhược điểm -Nhiều hàm sử dụng chung CSDL thay đổi giá trị=> khó kiểm sốt chương trình lớn phức tạp -Gặp khó khăn thay đổi CSDL dẫn tới phải xây dựng lại toàn cá hàm xây dựng có liên quan -Tính mở hệ thống không tận dụng tài nguyên -Việc tách rời liệu khỏi chức xử lý dẫn tới việc che dấu bảo vệ thông tin hệ thống 1.1.2 Lập trình hướng đối tượng -Chiến lược phát triển phần mềm hướng đối tượng quan sát giới tập đối tượng lấy đối tượng làm trung tâm -Hệ thống tập hợp đối tượng quan hệ đối tượng VD: Để thực xây nhà ta cần kiến trúc sư, kĩ sư xây dựng, thợ xây, phụ vữa, vV…… -Các đối tượng trao đổi với thông điệp (Message) -Không phân tách liệu chức Tiếp cận hướng đối tượng tập trung vào thông tin hành vi -Cho khả mềm dẻo, có khả kế thừa cao Chương trình = Đối tượng=∑ Cấu trúc liệu+Giải thuật Lập trình hướng đối tượng có hai đặc trưng bản: • Đóng gói liệu: liệu ln tổ chức thành thuộc tính lớp đối tượng Việc truy nhập đến liệu phải thông qua phương thức đối tượng lớp • Sử dụng lại mã nguồn: việc sử dụng lại mã nguồn thể thông qua chế kế thừa Cơ chế cho phép lớp đối tượng kế thừa từ lớp đối tượng khác Khi đó, lớp kế thừa, sử dụng phương thức (mã nguồn) lớp bị kế thừa, mà không cần phải định nghĩa lại 1.2 Một số khái niệm Lập trình hướng đối tượng 1.2.1 Đối tượng(Object) Đối tượng khái niệm sở quan trọng phương pháp tiếp cận LTHĐT, đối tượng thực thể hệ thống, cấu thành lên hệ thống các khái niệm liên quan đến hệ thống VD: KhachHang, HoaDon, MatHang vv Đối tượng khái niệm cho phép mô tả vật, thực thể giới thực Đối tượng=Trạng thái+Hành vi+Định danh VD:Máy tính tơi, SV Nguyễn Thị A Trong đó: *Trạng thái: tập hợp giá trị thuộc tính mà đối tượng Có thời điểm VD:HP, HP Pavilion Entertaiment PC, Core i3, vv… Nguyễn Thị A, Thái Bình, 1992, vv… *Hành vi:Thể chức đối tượng hệ thống Hành vi=Tập phương thức VD: khở động(), tắt(),xem ảnh() Ăn(), Ngủ(), Học() *Định danh thể sử tồn đối tượng Serie HLSDF:34545353 Số CMTND: 090708308 Nhiệm vụ Phân tích thiết kế hướng đối tượng phân tích tốn thành đối tượng xác định sử trao đổi thông tin đối tượng(các đối tượng trao đổi với thông điệp) 1.2.2 Lớp đối tượng (Class) Lớp khái niệm dùng để mô tả tập hợp các đối tượng có cấu trúc, hành vi có mối quan hệ với đối tượng khác VD: Sinh Viên, Máy tính Laptop Lớp=các thuộc tính+Các phương thức Sinh Viên Thuộc tính +Mã SV +Họ tên +Địa +Năm sinh +Chuyên ngành …… Phương Thức +Học() +Thi() …… Lớp trừu tượng hóa đối tượng(tìm kiếm điểm chung nhất(giống nhau) bỏ qua điểm khác 1.2.3 Bao bọc che dấu thơng tin Việc đóng gói liệu hàm vào đơn vị cấu trúc(gọi lớp) xem nguyên tắc bao bọc che dấu thông tin Kỹ tuật cho phép xác định vùng đặc trưng riêng, công khai bao gồm liệu hàm nhằm điều khiển hạn chế truy nhập tùy tiện đối tượng khác -Các hàm công khai lớp đóng vai trò giao diện đối tượng với phần lại hệ thống -Nguyên tắc bao bọc liệu để ngăn cấm truy nhập trực tiếp lập trình gọi che dấu thông tin Dữ liệu riêng Hàm riêng Dữ liệu công khai Hàm công khai VD: Thuốc bổ +Thành phần//dữ liệu công khai +Công dụng//dữ liệu công khai +Tác dụng phụ//dữ liệu công khai +Một số thành phần đặc biệt// liệu che dấu +Cách dùng()//công khai +Cách sản xuất()//hàm che dấu 1.2.4 Tính đa hình (polymorphism): Thể thơng qua việc gửi thông điệp (message) Việc gửi thông điệp so sánh việc gọi hàm bên đối tượng Các phương thức dùng trả lời cho thông điệp tùy theo đối tượng mà thơng điệp gửi tới có phản ứng khác Người lập trình định nghĩa đặc tính (chẳng hạn thơng qua tên phương thức) cho loạt đối tượng gần thi hành dùng tên gọi mà thi hành đối tượng tự động xảy tương ứng theo đặc tính đối tượng mà khơng bị nhầm lẫn Thí dụ định nghĩa hai đối tượng "hinh_vuong" "hinh_tron" có phương thức chung "chu_vi" Khi gọi phương thức đối tượng "hinh_vuong" tính theo cơng thức khác với đối tượng "hinh_tron" 1.2.4 Sự mở rộng, kế thừa Nguyên lý kế thừa cho phép đối tượng lớp quyền sử dụng số tính chất(Dữ liệu, Hàm) lớp khác -Một lớp lớp con(lớp dẫn xuất) lớp khác nghĩa bổ xung thêm số tính chất để thu hẹp phạm vi xác định đối tượng lớp cho phù hợp với ngữ cảnh thực tế -Theo nguyên lý chung đối tượng thuộc tính hàm thành phần cơng khai quyền kế thừa hàm thành phần riêng không phép kế thừa 1.2.5 Truyền thông điệp Nguyên lý trao đổi thông tin cách truyền thông điệp cho phép xây dựng hệ thống mô gần với giới thực Truyền thông điệp cho đối tượng tức phải báo cho phải thực việc, yêu cầu Cách ứng xử của đối tượng mô tả hàm công khai VD: 1.3 Các ngơn ngữ lập trình hướng đối tượng C++,C#,Java C++ Ngôn ngữ C++ phát triển từ ngôn ngữ C Có thể coi C++ cải tiến C Nó mang đầy đủ đặc tính C Một chương trình viết C biên dịch trình biên dịch C++ Ở phiên đầu tiên, thực chất mã nguồn C++ dịch sang mã nguồn C, từ mã nguồn C tiếp tục biên dịch tiếp C++ ngôn ngữ lập trình hướng đối tượng, có đầy đủ tính chất ngơn ngữ lập trình hướng đối tượng: tính kế thừa, tính đóng kín tính đa dạng Nhưng C++ khơng phải ngơn ngữ hướng đối tượng hồn tồn mà ngơn ngữ "đa hướng" Vì C++ hỗ trợ C lập trình hướng hành động lập trình hướng đối tượng C++ kết hợp ý tưởng hay lập trình có cấu trúc với việc phân chia toán thành nhóm nhỏ có quan hệ với nhau, nhóm đối tượng chứa lệnh liệu riêng C++ đưa vào khái niệm hàm ảo, tải hàm, tải toán tử cho phép tạo kiểu liệu trừu tượng, hỗ trợ thừa kế bội Mục tiêu C++ tiếp cận ý tưởng phương pháp luận hướng đối tượng 10 keys() put(Object, Object) rehash() remove(Object key) size() toString() Lớp Random Tạo số ngẫu nhiên theo thuật toán pseudo Những phương thức nhận giá trị ngẫu nhiên: nextDouble( ) nextFloat( ) nextGaussian( ) nextInt( ) nextLong( ) Phương thức khởi tạo (Constructors): random() random(long) Những phương thức lớp RandomnextDouble() nextFloat() nextGaussian() nextInt() 65 nextLong() setSeed(long) Lớp Vector Cung cấp khả co giản cho mảng thêm phần tử vào mảng Lưu trữ thành phần kiểu Object Một Vector riêng rẽ lưu trữ phần tử khác nhau, instance lớp khác Phương thức khởi tạo (Constructors): Vector(int) Vector(int, int) Vector() addElement(Object) capacity( ) clone( ) contains(Object) copyInto(Object [ ]) elementAt(int) elements( ) ensureCapacity(int) firstElement( ) indexOf(Object) indexOf(Object, int) insertElementAt(Object, int) 66 isEmpty( ) lastElement( ) lastIndexOf(Object) lastIndexOf(Object, int) removeAllElements( ) removeElement(Object) removeElementAt(int) setElementAt(Object, int) setSize(int) size( ) toString( ) trimToSize( ) 5.3 Lớp chuỗi (Lớp String) Việc xử lý xâu ký tự Java hỗ trợ hai lớp String StringBuffer: + Lớp String dùng cho xâu ký tự bất biến, nghĩa xâu đọc khởi tạo giá trị đầu tiên, giá trị không thay đổi + Lớp StringBuffer sử dụng xâu ký tự động, thay đổi nội dung tùy a) Tạo lập khởi tạo xâu + Sử dụng toán tử tạo lập String() nạp chồng theo đối số để tạo đối tượng xâu String(String s) 67 String([] mang) String(StringBuffer buf) Ví dụ: byte[] bytes = {97, 98,98,97}; char[] characters = {‘a’, ‘b’, ‘b’,‘a’}; StringBuffer buff = new StringBuffer(“abba”); String byteStr = new String(bytes);// Chuyển mảng bytes xâu String charStr = new String(charactes);//charStr = “abba” String buffStr = new String(buff); String str = new String(“abba”); + Có thể sử dụng cách tạo lập khởi tạo xâu theo cách truyền thống (khơng sử dụng tốn tử tạo lập) dựa vào dãy ký tự như: String str = “Dung dong den toi”; b) Đọc ký tự xâu + Hàm int length(): trả số ký tự xâu gọi kích thước xâu + Hàm char charAt(int index): trả ký tự thứ index (bắt đầu từ 0) xâu thời (0≤ index ≤ length()-1) Nếu index vượt khỏi phạm vi xác định hệ thống cho qua ngoại lệ StringIndexOutOfBoundsException Ví dụ 6.3 Sử dụng hàm length() charAt() để đếm số lần lặp ký tự xâu, kể dấu cách public class Dem{ public static void main(String[] args){ int[] mangDem = new int[Character.MAX_VALUE]; 68 String str = “Khong duoc dung den toi!”; for (int i = 0; i < str.length(); i++) // (1) try{ mangDem[str.charAt(i)]++; // (2) }catch(StringIndexOutOfBoundsException e){ System.out.println(“Chi so vuot khoi gioi han”); } for (int i = 0; i < mangDem.length; i++) if (mangDem[i] != 0) System.out.println((char)i + “:” + mangDem[i]); } } c) So sánh xâu Các ký tự so sánh dựa giá trị mã Unicode Hai xâu so sánh theo thứ tự từ điển cách so sánh hai ký tự tương ứng hai xâu Xâu “abba” đứng trước (nhỏ hơn) xâu “aha” ký tự thứ hai xâu “abba” ‘b’ đứng trước ‘h’ “aha” Trong lớp String có hàm sau sử dụng để so sánh xâu boolean equals(Object obj) boolean equalsIgnoreCase(String str2) Hàm equals() viết đè String để kiểm tra xem đối tượng lớp String đối tượng tham số có tập ký hiệu hay khơng Tương tự hàm equalsIgnoreCase() thực so sánh, không phân biệt trường hợp chữ thường, chữ hoa 69 boolean startWith(String str) boolean endWith(String str) Hai hàm cho kết true xâu bắt đầu (kết thúc) đối số str int compareTo(String str2) int compareTo(Object obj) Hàm compareTo() đầu thực só sánh hai xâu trả lại kết dựa vào kết đối sánh: + xâu thời xâu đối số, + Giá trị nhỏ 0, xâu nhỏ xâu đối số theo thứ tự từ điển, + Giá trị lớn 0, xâu lớn xâu đối số theo thứ tự từ điển, Hàm compareTo() thứ hai thực tương tự như hàm đầu đối số chuyển đối tượng xâu, ngược lại cho qua để xử lý ngoại lệ ClassCastException Ví dụ: String strA = new String(“Ha Noi, Viet Nam”); String strB = new String(“Ha noi, Viet nam”); boolean b1 = strA equals(strB); // false boolean b2 = strA equalsIgnoreCase(strB); // true String str1 = new String(“abba”); String str2 = new String(“aha”); int compVal = str1.compareTo(str2);// Giá trị âm str1

Ngày đăng: 03/03/2020, 09:10

Từ khóa liên quan

Mục lục

  • CHƯƠNG 1: GIỚI THIỆU VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

    • 1.1. Các phương pháp tiếp cận trong lập trình

    • 1.2. Một số khái niệm của Lập trình hướng đối tượng

      • 1.3. Các ngôn ngữ lập trình hướng đối tượng

      • CHƯƠNG 2:NGÔN NGỮ JAVA

        • 2.1 Đặc điểm ngôn ngữ Java

        • 2.2 Các dạng chương trình có thể phát triển với java.

        • 2.3 Môi trường Java(java flatform)

        • 2.4. Cấu trúc 1 tiệp chương trình java

        • 2.5 Các phần tử cơ sở của Java

        • 2.6. Các kiểu dữ liệu nguyên thủy(cơ bản)

        • 2.7.Các phép toán và biểu thức.

        • 2.8. Các quy tắc chuyển đổi kiểu.

        • 2.9. Biến và khai báo biến trong java.

        • CHƯƠNG 3: LỚP VÀ CÁC THÀNH PHẦN CỦA LỚP

          • 3.1 Định nghĩa lớp

          • 3.2. Định nghĩa các hàm thành phần

          • 3.3. Nạp chồng các hàm thành phần (overloading)

          • 3.4. Viết đè các hàm thành phần( kế thừa)

          • 3.5. Toán tử tạo lập đối tượng.(Constructor)

          • 3.6. Truyền tham số trong lời gọi hàm.

            • b) Truyền các giá trị tham chiếu đối tượng

            • 3.7. Quan hệ kế thừa giữa các lớp.

            • 3.8. Toán tử móc xích giữa các lớp kế thừa this() và super()

            • 1.9.Lớp trừu tượng và giao diện

Tài liệu cùng người dùng

Tài liệu liên quan