Lập trình hướng đối tượng trên Matlab
Em đang tìm hiểu vấn đề này.
Em có đọc Help của Matlab nhưng mà 1 số ví dụ của nó lại không chạy được. http://www.mathworks.com/access/help...matlab_oop.pdf Em dùng version 7.1,không biết phải version bao nhiêu thì mới hỗ trợ lập trình hướng đối tượng. Thêm 1 điểm nữa là matlab hình như không cho định nghĩa kiểu.Thế thì thật là bất lợi. Ai có kinh nghiệm rồi có thể chỉ bảo cho em được không ạ |
Version 7.1 cũng đã hỗ trợ lập trình hướng đối tượng rồi. Suốt version 7 cho đến R2007b, hình như là cách lập trình hướng đối tượng giống nhau. Sang R2008a thì có thay đổi.
Với version 7.1, cấu trúc của nó rất đơn giản: 1 thư mục sẽ là một lớp, thư mục này có tên bắt đầu bằng ký tự @ File khởi tạo đối tượng của lớp phải có tên giống tên thư mục (bỏ chữ @) File khởi tạo ấy sẽ khai báo các biến của đối tượng. Theo đặc điểm của Matlab, nó sẽ tự nhận biết kiểu nào là phù hợp, chứ mình không cần định kiểu cho biến. (ví dụ gán biến a=1 thì a sẽ là double, gán a=true thì a sẽ là boolean) Các biến của đối tượng không có phân biệt giữa public / protected / private (nhưng sang version 7.6 - R2008a thì có). Mặc định tất cả các biến là private, hàm nào ở bên ngoài thư mục của lớp đều không truy cập được biến, mà phải gọi một hàm bên trong thư mục của lớp (bất kỳ file .m nào thuộc thư mục đó đều có quyền truy cập biến của đối tượng). Người ta hay viết hàm set.m và get.m cho mỗi lớp. Matlab có kiểu override các hàm cơ bản, ví dụ nếu mình viết hàm có tên plus.m, thì khi thực hiện lệnh a+b (với a và b là 2 đối tượng của lớp đó), nó tương đương với plus(a,b). Tương tự với các hàm trùng với từ khóa minus, multiply... |
Em thấy trong help của Matlab
http://www.mathworks.com/access/help...intropage.html Có mấy ví dụ:trong đó có ví dụ viết trong M-files http://www.mathworks.com/access/help...p/class_3a.gif classdef properties .... end methods function ... function .... end Cái cấu trúc này gần giống C++,tuy nhiên matlab của em lại không hiểu.Có thể nó là cấu trúc của matlab R2008a. Không biết 1 chương trình OOP trên Matlab 7.1 có viết giống C++ không. |
Đấy là cách viết của Matlab R2008a đấy (một class đặt trong một file .m, bao gồm cả phần khai báo và các methods của nó, không phải là một thư mục như trước).
Em xem phần Help trong bản Matlab cài trong máy, thì nó chỉ chính xác cách làm với bản Matlab đó. (Mathworks.com hình như cũng có lưu phần help của các version cũ, nhưng không biết giờ link cho v7.1 là gì) |
Múi giờ GMT. Hiện tại là 06:49 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam