10/10/2018, 10:58
Xin ví dụ về lỡi ích của con trỏ và OOP
Có 2 vấn đề trong lập trình mà kẻ tự học như em nghi hoài không hiểu!
tại sao lại cần tới con trỏ
Một người bạn của em giải thích rằng, ví dụ ta có biến a, thoạt đầu ta cho a=1, sau đó a=2, a=3 lặp đi lặp lại tới 1 tr thì mất 1 tr ô nhớ. nếu dùng con trỏ thì chỉ mất bi nhiu đấy..
Em không biết có đúng không, nhưng nếu dúng thì ô nhớ là cái gì mà phải để dành!?
OOP tốt hơn Functional chở nào
Em đã cố đọc rất nhiều tài liệu về OOP để học đc cách lập trình mà hầu hết mọi người đều cho là nó tối ưu, nhưng cuối cùng em vẫn thấy nó không hơn gì kiểu lập trình viết hàm.
Em cảm thấy OOP dài dòng và chỉ là một hình thức. Ví dụ khi OO.MMM(data) thì có khác gì mình viết 1 Hàm MMM để áp giá trị vào OO đâu!?
Chỉ duy thấy có vài trường hợp khi có nhiều cái na ná, ví dụ trò chơi bán súng thì có nhiều loại súng, viết 1 đối tượng súng AK rồi thêm, bớt, thay đổi thuộc tính cho nó ra M16 thì em thấy OOP hửu dụng.
Việc tự học chủ yếu dựa trên ví dụ, em mong mọi người cho em một vài ví dụ dể hiểu để cho em khai sáng, chứ cả thế giới khen nó hay mà mình chả hiểu nó hay như thế nào thì....
Biết rằng cách tốt nhất là tự làm thật nhiều rồi nhận ra cái lợi, nhưng mà nó lại đi trái với quy trình lập trình hướng đối trong tài liệu em đọc, phải nắm rỏ vấn đề trước rồi mới vọc
Mong đc mọi người chia sẽ kiến thức!
Cảm ơn
tại sao lại cần tới con trỏ
Một người bạn của em giải thích rằng, ví dụ ta có biến a, thoạt đầu ta cho a=1, sau đó a=2, a=3 lặp đi lặp lại tới 1 tr thì mất 1 tr ô nhớ. nếu dùng con trỏ thì chỉ mất bi nhiu đấy..
Em không biết có đúng không, nhưng nếu dúng thì ô nhớ là cái gì mà phải để dành!?
OOP tốt hơn Functional chở nào
Em đã cố đọc rất nhiều tài liệu về OOP để học đc cách lập trình mà hầu hết mọi người đều cho là nó tối ưu, nhưng cuối cùng em vẫn thấy nó không hơn gì kiểu lập trình viết hàm.
Em cảm thấy OOP dài dòng và chỉ là một hình thức. Ví dụ khi OO.MMM(data) thì có khác gì mình viết 1 Hàm MMM để áp giá trị vào OO đâu!?
Chỉ duy thấy có vài trường hợp khi có nhiều cái na ná, ví dụ trò chơi bán súng thì có nhiều loại súng, viết 1 đối tượng súng AK rồi thêm, bớt, thay đổi thuộc tính cho nó ra M16 thì em thấy OOP hửu dụng.
Việc tự học chủ yếu dựa trên ví dụ, em mong mọi người cho em một vài ví dụ dể hiểu để cho em khai sáng, chứ cả thế giới khen nó hay mà mình chả hiểu nó hay như thế nào thì....
Biết rằng cách tốt nhất là tự làm thật nhiều rồi nhận ra cái lợi, nhưng mà nó lại đi trái với quy trình lập trình hướng đối trong tài liệu em đọc, phải nắm rỏ vấn đề trước rồi mới vọc
Mong đc mọi người chia sẽ kiến thức!
Cảm ơn
Bài liên quan
Giả sử CPU bạn là core i7(khoảng 3Ghz) => tốc độ CPU là 3 * 8= 24Ghz, bạn làm apps nào đó mà mỗi ô nhớ khoảng 100Mb, nếu không xài con trỏ bạn nhắm apps của bạn tối đa được bao nhiêu ô là hết chỗ chứa CPU, chưa kể còn tốn dung lượng cho windows và các apps khác
Câu 2:
Nếu có ai nói OOP tối ưu hơn Functional thì mình thấy chưa chắc, nhưng nếu nói OOP dễ hiểu hơn thì mình OK 100%. Giả sử bài toán đưa ra là lưu trữ thông tin của 1000 học sinh trong 20 lớp gồm có: mã số, tên, điểm bạn sẽ làm thế nào với Funtional ?
Nếu là mình mình sẽ xài OOP, viết class lớp học, class học sinh, class thông tin học sinh... cực dễ hiểu và dễ trình bày
=> Nói bậy bạ hi vọng giúp bạn phần nào
Mình đưa ra VD về lợi thế của OOP so với làm function thuần túy
VD1.Tính thừa hưởng ( thừa kế )
Trong lập trình Visual Basic, Visual Foxpro bạn tạo 1 loạt các class như nút lệnh , text box, Label để dùng trong toàn bộ ứng dụng rất lớn. Khi mình cần thay đổi style của toàn bộ ứng dụng như đổi sang font đậm thì chỉ việc sửa Class đã khai báo. Đó là cái hay của tính thừa hưởng.
Trong PHP cũng có vụ này
class class_a extends class_b
{
}
VD2.Tính bảo vệ.
Giả sử ở 1 số nút bạn muốn font in nghiêng, bạn chỉ việc gán cho nút đó thuộc tính font in nghiêng, các nút còn lại được "Bảo vệ" nên không bị nghiêng
Trong 2 VD 1 và 2, nếu bạn dùng function để tạo ra các nút lệnh, bạn sẽ phải giải quyết rất nhiều việc. viết thêm function hay truyền thêm biến.
VD3.Tạo phân trang trong PHP
làm bằng function:
function phantrang($so_sanpham,$so_sanpham_1_trang, $so_sanpham_dong, $style_phan_trang,$kieu_url,$kieu_muiten...)
{
}
sau 1 thời gian code option cho phantrang này là rất nhiều, mỗi lần bạn nâng cấp bạn sẽ phải nhét tham số vào hàm, sửa 1 loạt code ở nhiều nơi dùng đến nó
Cách làm class OOP
$paging=new class_phantrang();
$paging->html=$this->html_paging;
$paging->so_sanpham=$num_row;
$paging->$so_sanpham_1_trang=10;
$paging->$so_sanpham_dong=2;
$paging->create();
$paging1=$paging->content;
Các thuộc tính khác có thể không truyền mà mình sẽ khai báo mặc định trong class. Cần thuộc tính nào truyền thuộc tinh đó, do đó nâng cấp code rất dễ.
Sử dụng tiếp tục phân trang với tùy chọn khác thì bạn chỉ cần
$paging->$so_sanpham_dong=3;
$paging->create();
$paging2=$paging->content;
P/s:
oop , function , fw chỉ là way làm web , hok phải là tất nhiên cần có