Bản in của bài viết

Click vào đây để xem bài viết này ở định dạng ban đầu

taituinfo's Blog

huong doi tuong

  #1  
Cũ 22-02-2012, 09:59 PM
No Avatar
Thành viên mới
 
Ngày gia nhập: 07 2011
Bài viết: 15
 
Unhappy

Xin hỏi về các 4 tính chất của lập trình hướng đối tượng


Bản chất mình chưa hiểu về 4 tính chất của lập trình hướng đối tượng lắm, ai biết xin chỉ giáo dùm với
p/s: làm winform kiểu bài quản lý thì có tính chất gì của lập trình hướng đối tượng. Mình chỉ biết học code, code sao cho ra, chứ chẳng biết nó có tính chất gì....
Trả lời cùng với trích dẫn
  #2  
Cũ 22-02-2012, 10:10 PM
Avatar của huuhung
Moderator
 
Ngày gia nhập: 11 2008
Nơi ở: An Giang
Bài viết: 493
 
Mặc định

Tình toàn vẹn, Nhất quán... mình cũng không nhớ hết. Lúc đầu mình cũng quan niệm như bạn. Miễn sao chương trình ra kết quả đúng là đc. Nhưng như thế thì sau này ra ngoài làm ko ai nhận bạn đâu . Từ từ bạn sẽ hiểu
__________________
Nhận làm Project lập trình quản lý
Yahoo: nguyenhuuhung_1990
Trả lời cùng với trích dẫn
  #3  
Cũ 22-02-2012, 10:56 PM
Avatar của Asakura Yoh
Thành viên chính thức
 
Ngày gia nhập: 10 2010
Nơi ở: TpHCM
Bài viết: 49
 
Arrow

Bạn xem tài liệu bên trường ĐH KHTN thêm bạn sẽ hiểu.
Link: http://www.mediafire.com/?c5xujji3c9e99v6
__________________
Dạy kèm: phương pháp lập trình hướng đối tượng
Hướng dẫn đồ án môn học và chia sẻ kinh nghiệm học tập cho sinh viên.

Liên hệ: Trần Minh Vươ[email protected]_0934103448
Trả lời cùng với trích dẫn
  #4  
Cũ 23-02-2012, 08:13 AM
No Avatar
Thành viên mới
 
Ngày gia nhập: 01 2008
Bài viết: 1
 
Mặc định

cảm ơn bạn nhiều cái này mình cũng đang rất cần
Trả lời cùng với trích dẫn
  #5  
Cũ 23-02-2012, 02:13 PM
No Avatar
Thành viên mới
 
Ngày gia nhập: 07 2011
Bài viết: 15
 
Mặc định

Trích dẫn:
Nguyên bản được gửi bởi huuhung Xem bài viết
Tình toàn vẹn, Nhất quán... mình cũng không nhớ hết. Lúc đầu mình cũng quan niệm như bạn. Miễn sao chương trình ra kết quả đúng là đc. Nhưng như thế thì sau này ra ngoài làm ko ai nhận bạn đâu . Từ từ bạn sẽ hiểu
đúng như bạn nói, hum nọ mình đi pv họ hỏi mà, nếu đọc sách để hiểu đ/n về 4 cái tính chất của lập trình hướng đối tượng (đóng gói, kế thừa, đa hình, trừu tượng) thì mình có hiểu, nhưng để làm vào 1 bài lập trình thì mình k biết thì nào cần có nó và khi nào không, tại sao lại cần. Như mấy bài quản lý bằng winform mình làm, mình chẳng thấy cái tính chất nào trong đấy hết. Hum đi pv nhà pv hỏi: thế bài quản lý của em làm có phải là hướng đối tượng k?, lần đầu đi cũng trả lời là có, nhưng khi về mình mới ngẫm lại là chẳng thấy trong lúc mình làm nó có 4 cái tính chất của hướng đối tượng đâu. Họ hỏi mình thêm câu tính đa hình trong hướng đối tượng. Theo như mình đọc sách thì mỗi cái nói 1 kiểu
VD như mình có đọc 1 quyển sách họ cho ví dụ là: lớp giang viên, lớp sinh viên, lớp nhân viên đều có phương thức Show(), nhưng khi gọi phương thức Show() ở lớp giảng viên lại khác khi gọi phương thức Show() ở lớp sinh viên ===> đó là đa hình ( nhưng theo mình đó có lẽ là overload chứ k phải là override). Tiếp đó mình đọc 1 cuốn sách nó lại có 1 VD về tính đa hình: có lớp chiến binh, lớp này có thể tùy từng tình huống mà có cách xử lý khác nhau, VD như lớp này có thể đánh tay không để tấn công đối phương, có thể dùng bow hay thậm chí có thể dùng sword để tấn công đối phương ==>đó là tính đa hình. Đọc xong cái VD sau mình nghĩ có lẽ là đúng là đa hình. Hum đi pv họ hỏi là nếu đối tượng là cái bút thì em nói cho anh biết tính đa hình của cái bút, mình định nói là: cái bút nếu để viết thì là cái bút, nhưng nếu nó để đánh nhau thì nó có thể là hung khí giết người...nhưng mà bản chất mình vẫn chưa hiểu nên mình k dám trả lời
Vậy nên hum nay mới mạo muội hỏi các bạn của diễn đàn cộng đồng C việt, ai hiểu rõ bản chất về 4 tính chất của lập trình hướng đối tượng xin chỉ giáo cho mình (4 tính chất: đóng gói, kế thừa, đa hình, trừu tương )....Mình xin cảm ơn mọi người 67.gif
Trả lời cùng với trích dẫn
  #6  
Cũ 24-02-2012, 02:02 PM
Avatar của nguoidanongxala
Thành viên tích cực
 
Ngày gia nhập: 04 2009
Bài viết: 108
 
Thumbs up

Trích dẫn:
Nguyên bản được gửi bởi one2one Xem bài viết
đúng như bạn nói, hum nọ mình đi pv họ hỏi mà, nếu đọc sách để hiểu đ/n về 4 cái tính chất của lập trình hướng đối tượng (đóng gói, kế thừa, đa hình, trừu tượng) thì mình có hiểu, nhưng để làm vào 1 bài lập trình thì mình k biết thì nào cần có nó và khi nào không, tại sao lại cần. Như mấy bài quản lý bằng winform mình làm, mình chẳng thấy cái tính chất nào trong đấy hết. Hum đi pv nhà pv hỏi: thế bài quản lý của em làm có phải là hướng đối tượng k?, lần đầu đi cũng trả lời là có, nhưng khi về mình mới ngẫm lại là chẳng thấy trong lúc mình làm nó có 4 cái tính chất của hướng đối tượng đâu. Họ hỏi mình thêm câu tính đa hình trong hướng đối tượng. Theo như mình đọc sách thì mỗi cái nói 1 kiểu
VD như mình có đọc 1 quyển sách họ cho ví dụ là: lớp giang viên, lớp sinh viên, lớp nhân viên đều có phương thức Show(), nhưng khi gọi phương thức Show() ở lớp giảng viên lại khác khi gọi phương thức Show() ở lớp sinh viên ===> đó là đa hình ( nhưng theo mình đó có lẽ là overload chứ k phải là override). Tiếp đó mình đọc 1 cuốn sách nó lại có 1 VD về tính đa hình: có lớp chiến binh, lớp này có thể tùy từng tình huống mà có cách xử lý khác nhau, VD như lớp này có thể đánh tay không để tấn công đối phương, có thể dùng bow hay thậm chí có thể dùng sword để tấn công đối phương ==>đó là tính đa hình. Đọc xong cái VD sau mình nghĩ có lẽ là đúng là đa hình. Hum đi pv họ hỏi là nếu đối tượng là cái bút thì em nói cho anh biết tính đa hình của cái bút, mình định nói là: cái bút nếu để viết thì là cái bút, nhưng nếu nó để đánh nhau thì nó có thể là hung khí giết người...nhưng mà bản chất mình vẫn chưa hiểu nên mình k dám trả lời
Vậy nên hum nay mới mạo muội hỏi các bạn của diễn đàn cộng đồng C việt, ai hiểu rõ bản chất về 4 tính chất của lập trình hướng đối tượng xin chỉ giáo cho mình (4 tính chất: đóng gói, kế thừa, đa hình, trừu tương )....Mình xin cảm ơn mọi người 67.gif
Trong lập trình hướng đối tượng(OOP) có 4 tính chất là : Tính trừu tượng, giấu kín, kế thừa và đa hình
1. Tính trừu tượng : Việc bạn mô hình hóa thông tin của 1 sinh viên dưới dạng 1 lớp chính là bạn đã sử dụng nó rồi đó

Code:
											public class Student
       {
            public string FirstName{get;set;}
            public string LastName{get;set;}
            public int Age{get;set;}
            public static string Class
            {
                get;set;
            }
            public string overrider ToString()
            {
                 return FirstName + " " + LastName;
            }
          
       }
2. Tính giấu kín : Chỉ bên trong lớp mới đc truy cập trực tiếp các thông tin private của chính lớp đó, bên ngoài lớp phải truy cập thông qua Property
Code:
											public class Student
       {
                //Chỉ bên trong class Student mới được phép truy cập các trường này
                private string _firstName;
                private string  _lastName;
                //Bên ngoài lớp vẫn truy cập được nó nhưng thông qua thuộc tính
                //Giấu cơ chế hoạt động bên trong(Bạn có thể hiểu là ông muốn lấy hoặc thay đổi tên của 1 Student thì ông phải truy cập qua FirstName tôi sẽ làm cho ông(Ông ko thể biết được tôi đã làm thế nào)
                public string FirstName
                {
                     get
                     {
                        return this._firstName;
                     }
                     set
                     {
                         this._firstName = value;
                     }
                }

        }
1 ví dụ trong thực tế là cái điện thoại bàn. Ông cứ nhập số điện thoại và nhấn nút gọi là tôi sẽ gọi đến số máy kia cho ông(Ông ko thể biết đc tôi làm như nào, tháo tung cái điện thoại ra chưa chắc ông đã biết )

3. Tính kế thừa(cái này quá rõ rồi)
4. Tính đa hình : Khi trong lớp cơ sở bạn sử dụng thuộc tính, phương thức... mà có sử dụng modifier virtual, sau đó trong lớp kế thừa từ lớp này overrider thuộc tính, phương thưc... đó
Giả sử bạn có 1 lớp Worker mô tả thông tin cơ bản 1 công nhân, với cách thức tính (lương bằng lương cơ bản * tổng số ngày làm việc)
Code:
											public class Worker
     { 
        public string FirstName{get;set;}
        public string LastName{get;set;}
        public decimal SalaryBasic
        {  
               get;set;
                    
         }
        public int TotalWork
        {
           get;
           set;
        }
        public virtual decimal Salary()
       {
             return (SalaryBasic*TotalWork);
        }
     }
Bây h bạn muốn tính lương cho công nhân lao động chân tay(WorkerManual) nhưng cách thức tính lương (Lương cơ bản * tổng số ngày làm việc) + Phụ cấp :
Code:
											public class WorkerManual:Worker
     { 
        public string FirstName{get;set;}
        public string LastName{get;set;}
        public decimal Bonus{get;set;}
        public decimal SalaryBasic
        {  
               get;set;
                    
         }
        public int TotalWork
        {
           get;
           set;
        }
        public override decimal Salary()
       {
             return (SalaryBasic*TotalWork + Bonus);
        }
     }
Tương tự với quản lý(Manager) thì cách thức tính lương (Lương cơ bản * tổng số ngày làm việc + 5*Bonus) chẳng hạn :
Code:
											public class Manager:Worker
     { 
        public string FirstName{get;set;}
        public string LastName{get;set;}
        public decimal Bonus{get;set;}
        public decimal SalaryBasic
        {  
               get;set;
                    
         }
        public int TotalWork
        {
           get;
           set;
        }
        public override decimal Salary()
       {
             return (SalaryBasic*TotalWork + 5*Bonus);
        }
     }
Hy vọng giúp ích !
__________________
Ai đã gieo vào lòng Ai nỗi nhớ
Để vì Ai sóng vỗ những đêm dài
Ai có biết vì Ai-Ai không ngủ
Trằn trọc hoài nỗi nhớ của riêng Ai.
My blog : http://www.toaipro.tk
Trả lời cùng với trích dẫn
  #7  
Cũ 24-02-2012, 04:25 PM
No Avatar
Thành viên nhiệt tình
 
Ngày gia nhập: 04 2010
Bài viết: 1,538
 
Mặc định

Bạn đã đến giai đoạn đi phỏng vấn thì nên tập cách viết bài cho chững chạc. Đặt đoạn văn đều đặn, tránh dùng từ theo lối "học sinh", tránh viết tắt

VnVista I-Shine
© http://vnvista.com