Steve Jobs giải thích Lập trình hướng đối tượng

article-2196121-14C1AEC4000005DC-793_634x424

Steve Jobs chưa bao giờ được coi là một lập trình viên giỏi, bản thân ông lúc còn sống cũng chưa bao giờ khẳng định như vậy. Tuy nhiên, cách Steve hiểu về công nghệ và gắn nó với cuộc sống để làm thay đổi thế giới ra sao là điều được thực tế đã và đang minh chứng. Trong một bài trả lời phỏng vấn của mình trên Rolling Stone vào vănm 1994, Steve Jobs đã giải thích về Lập trình hướng đối tượng (OOP) một cách hết sức dễ hiểu và gần gũi. Cách lý giải của Steve về OOP cho đến nay vẫn được rất nhiều người coi là định nghĩa xuất sắc nhất về lập trình hướng đối tượng: 

steve

Đối tượng (Object) cũng như con người vậy. Con người thì sinh sống và có kiến thức để làm những công việc họ muộn, mỗi con người cũng có những ký ức của được lưu trong bộ nhớ của mình. Bởi vậy cũng giống như con người, tương tác giữa các Object có mức độ trừu tượng hoá (abstract) rất cao. Chẳng hạn như: Tôi là đối tượng chịu trách nhiệm giặt đồ cho bạn, bạn chỉ cần đưa quần áo bẩn cho tôi, gửi cho tôi mệnh lệnh (send message) “Giặt quần áo cho tôi”. Tôi biết được đâu là nơi giặt quần áo tốt nhất ở San Francisco. Tôi có tiền trong vì và tôi có thể giao tiếp bằng tiếng Anh. Sau đó tôi sẽ gọi một chiếc xe Taxi, yêu cầu được chở đến địa điểm giặt đồ, giặt đồ cho bạn sau đó gọi Taxi đi về, đưa quần áo sạch cho bạn và nhắn rằng (send message) “Quần áo sạch của bạn đây”. 

Bạn hoàn toàn không biết rằng tôi làm thế nào để giặt sạch quần áo cho bạn. Bạn không biết chỗ giặt quần áo ở đâu, có thể bạn cũng không biết tiếng Anh và không gọi được taxi. Tôi biết cách làm tất cả những điều này còn bạn thì không và thực ra bạn cũng không cần biết, tất cả những kỹ năng này được ẩn giấu (hidden) trong tôi. Sự tương tác giữa tôi với bạn ở mức độ trừu tượng hoá (abstraction) rất cao. Đó chính là Đối tượng (Object). Chúng đóng gói lại (encapsulation) tất cả những gì phức tạp. 

Trong lập trình hướng đối tượng có 04 đặc điểm chính mà ai cũng cần phải nhớ: 

  • Tính kế thừa (Inheritance) 
  • Tính đa hình (Polymophism) 
  • Tính tường tượng (Abstraction) 
  • Tính đóng gói (Encapsulation) 

Ngoài tính kế thừa tương đối dễ hiểu, 03 khái niệm còn lại thường gây nhầm lẫn. Những cách lý giải của Steve Jobs đã khiến cho vấn đề trở nên đơn giản hơn rất nhiều.  

Tính trừu tượng (abstraction) được Steve diễn tả rất thông mình, bạn không có khái niệm thế nào giặt quần áo, bạn chỉ cần biết đến nhu cầu của mình là làm thế nào để chuyển quần áo bẩn sang quần áo sạch. 

Bên cạnh đó, vì tôi là một con người, trong bối cảnh được giao nhiệm vụ là giặt quần áo, tôi sẽ sử dụng đến các kỹ năng liên quan đến giặt quần áo của mình để làm điều này do mệnh lệnh (message) quy định. Nếu có mệnh lệnh khác, tôi sẽ sử dụng đến những kiến thức (data) và kỹ năng (method) khác của mình để thực hiện. 

Tính đóng gói (encapsulation) giống như một khái niệm nối dài của tính trừu tượng. Bởi khi bạn tương tác với tôi ở mức độ trừu tượng, bạn không thể can thiệp vào những gì tôi biết (data), phương thức (method)thực hiện của tôi. Bởi tất cả đã được tôi giấu kín và bảo vệ (private & protected). 

Với những ai chưa hiểu rõ về Lập trình hướng đối tượng như tôi, khi đọc xong lý giải của Steve, khái niệm này bỗng trở lên gần gũi và đơn giản đơn hơn rất nhiều, không có gì “thần thánh” như trước nữa. Có lẽ cũng với chính tư duy về công nghệ rất gần gũi với con người, Steves đã có thể tạo ra mối liên hệ/ tính ứng dụng của công nghệ với cuộc sống của chúng ta.