lập trình hướng đối tượng

Mẫu hình lập trình
  • Action language
  • Hướng tác tử
  • Hướng mảng
  • Automata-based programming
  • Concurrent computing
    • Relativistic programming
  • Data-driven programming
  • Khai báo (ngược với: Mệnh lệnh)
    • Hàm
      • Logic hàm
      • Purely functional
    • Logic
      • Abductive logic
      • Answer set
      • Concurrent logic
      • Logic hàm
      • Inductive logic
    • Ràng buộc
      • Constraint logic
        • Concurrent constraint logic
    • Dataflow
      • Flow-based
      • Phản ứng
  • Dynamic/scripting
  • Hướng sự kiện
  • Function-level (ngược với: Value-level)
    • Point-free style
      • Concatenative
  • Tổng quát
  • Mệnh mệnh lệnh (ngược với: Khai báo)
    • Thủ tục
    • Hướng đối tượng
  • Literate
  • Language-oriented
    • Natural-language programming
    • Discipline-specific
    • Ngôn ngữ miền thường xuyên biệt
    • Grammar-oriented
    • Intentional
  • Lập trình meta
    • Automatic
      • Inductive programming
    • Reflective
      • Attribute-oriented
    • Macro
    • Template
  • Non-structured (ngược với: Cấu trúc)
    • Array
  • Nondeterministic
  • Tính toán tuy vậy song
    • Process-oriented
  • Probabilistic
  • Stack-based
  • Structured (ngược với: Non-structured)
    • Block-structured
    • Hướng đối tượng
      • Actor-based
      • Dựa bên trên lớp
      • Đồng thời
      • Dựa bên trên vẹn toàn mẫu
      • By separation of concerns:
        • Hướng khía cạnh
        • Role-oriented
        • Subject-oriented
    • Đệ quy
  • Ký hiệu
  • Value-level (ngược với: Function-level)
  • Lập trình lượng tử
  • x
  • t
  • s

Lập trình phía đối tượng (tiếng Anh: Object-oriented programming - OOP) là 1 trong những hình mẫu hình xây dựng dựa vào định nghĩa "đối tượng", nhưng mà vô cơ, đối tượng người tiêu dùng tiềm ẩn những tài liệu, bên trên những ngôi trường, thông thường được gọi là những thuộc tính; và mã mối cung cấp, được tổ chức triển khai trở thành những phương thức. Phương thức hỗ trợ cho đối tượng người tiêu dùng hoàn toàn có thể truy xuất và hiệu chỉnh những ngôi trường tài liệu của đối tượng người tiêu dùng không giống, nhưng mà đối tượng người tiêu dùng thời điểm hiện tại sở hữu tương tác (đối tượng được tương hỗ những cách thức "this" hoặc "self"). Trong lập trình hướng đối tượng, công tác PC được design bằng phương pháp tách nó thoát khỏi phạm vi những đối tượng người tiêu dùng tương tác cùng nhau.[1][2] Ngôn ngữ lập trình hướng đối tượng khá đa dạng và phong phú, phần rộng lớn là những ngôn từ xây dựng theo gót lớp, tức là những đối tượng người tiêu dùng trong số ngôn từ này được coi như thực thể của một tấm, được dùng làm khái niệm một loại tài liệu.

OOP sẽ là chung tăng năng suất, giản dị và đơn giản hóa chừng phức tạp Khi gia hạn rưa rứa không ngừng mở rộng ứng dụng bằng phương pháp được cho phép xây dựng viên triệu tập vô những đối tượng người tiêu dùng ứng dụng ở bậc cao hơn nữa. Bên cạnh đó, nhiều người còn nhận định rằng OOP dễ dàng thu nhận rộng lớn mang lại những người dân mới mẻ học tập về xây dựng rộng lớn là những cách thức trước cơ. Một cơ hội giản lược, đấy là định nghĩa và là 1 trong những nỗ lực nhằm mục đích hạn chế nhẹ nhàng những thao tác ghi chép mã cho những người xây dựng, được cho phép chúng ta đưa đến những phần mềm nhưng mà những nhân tố bên phía ngoài hoàn toàn có thể tương tác với những công tác cơ tương tự như là tương tác với những đối tượng người tiêu dùng cơ vật lý.

Bạn đang xem: lập trình hướng đối tượng

Những đối tượng người tiêu dùng vô một ngôn từ OOP là những phối kết hợp thân thiết mã và tài liệu nhưng mà bọn chúng được coi nhận như là 1 trong những đơn vị chức năng có một không hai. Mỗi đối tượng người tiêu dùng sở hữu một thương hiệu riêng lẻ và toàn bộ những tham lam chiếu cho tới đối tượng người tiêu dùng này được tổ chức qua quýt thương hiệu của chính nó. Như vậy, từng đối tượng người tiêu dùng sở hữu năng lực nhận vô những thông tin, xử lý tài liệu (bên vô của nó), và gửi rời khỏi hoặc vấn đáp cho tới những đối tượng người tiêu dùng không giống hoặc cho tới môi trường xung quanh.

Đa phần những ngôn từ xây dựng thông thườn nhất lúc bấy giờ (như C++, Delphi, Java, Python, v.v...) là những ngôn từ xây dựng nhiều hình mẫu hình và đều tương hỗ lập trình hướng đối tượng ở nhiều cường độ không giống nhau, thông thường được kết phù hợp với xây dựng khẩu lệnh, xây dựng giấy tờ thủ tục. Các ngôn từ lập trình hướng đối tượng xứng đáng lưu ý bao gồm sở hữu Java, C++, C#, Python, PHP, Ruby, Perl, Object Pascal, Objective-C, Dart, Swift, Scala, Common Lisp, và Smalltalk.

Các đặc thù cơ bản[sửa | sửa mã nguồn]

Đối tượng (object): Các tài liệu và thông tư được phối kết hợp vào trong 1 đơn vị chức năng khá đầy đủ tạo thành một đối tượng người tiêu dùng. Đơn vị này tương tự với 1 công tác con cái và vì vậy những đối tượng người tiêu dùng sẽ tiến hành tạo thành nhì thành phần chính: phần những phương thức (method) và phần những thuộc tính (attribute / properties). Trong thực tiễn, những phương thức của đối tượng người tiêu dùng là những hàm và những thuộc tính của chính nó là những trở thành, những thông số hoặc hằng nội bên trên của một đối tượng người tiêu dùng (hay rằng cách tiếp theo hội tụ những tài liệu nội bên trên tạo nên trở thành tính chất của đối tượng). Các phương thức là phương tiện đi lại nhằm dùng một đối tượng người tiêu dùng trong những lúc những thuộc tính tiếp tục tế bào mô tả đối tượng người tiêu dùng sở hữu những đặc thù gì.
Các cách thức và những tính chất thông thường gắn chặt với thực tiễn những đặc điểm và dùng của một đối tượng người tiêu dùng.
Trong thực tiễn, những đối tượng người tiêu dùng thông thường được trừu tượng hóa qua quýt việc khái niệm của những lớp (class).
Tập thích hợp những độ quý hiếm hiện tại sở hữu của những tính chất tạo thành trạng thái của một đối tượng người tiêu dùng.
Mỗi phương thức hoặc từng tài liệu nội bên trên cùng theo với những đặc thù được khái niệm (bởi người lập trình) sẽ là một đặc tính riêng rẽ của đối tượng người tiêu dùng. Nếu không tồn tại gì nhầm lẫn thì hội tụ những đặc điểm này gọi công cộng là đặc điểm của đối tượng người tiêu dùng.

Lập trình phía đối tượng người tiêu dùng là 1 trong những cách thức xây dựng sở hữu 4 đặc thù chủ yếu sau:

  • Tính trừu tượng (abstraction): Đây là năng lực của công tác bỏ dở hay là không lưu ý cho tới một vài góc nhìn của vấn đề nhưng mà nó đang được thẳng thao tác lên, tức là nó sở hữu năng lực triệu tập vô những cốt lõi quan trọng. Mỗi đối tượng người tiêu dùng đáp ứng như là 1 trong những "động tử" hoàn toàn có thể hoàn thành những việc làm một cơ hội nội cỗ, report, thay cho thay đổi hiện trạng của chính nó và liên hệ với những đối tượng người tiêu dùng không giống nhưng mà ko cần thiết cho biết thêm thực hiện cơ hội nào là đối tượng người tiêu dùng tổ chức được những thao tác. Tính hóa học này thông thường được gọi là sự trừu tượng của dữ liệu.
    Tính trừu tượng còn thể hiện tại qua quýt việc một đối tượng người tiêu dùng lúc đầu hoàn toàn có thể sở hữu một vài điểm sáng công cộng mang lại nhiều đối tượng người tiêu dùng khác ví như là sự việc không ngừng mở rộng của chính nó tuy nhiên phiên bản thân thiết đối tượng người tiêu dùng lúc đầu này hoàn toàn có thể không tồn tại những phương án thực hành. Tính trừu tượng này thông thường được xác lập vô định nghĩa gọi là lớp trừu tượng hoặc lớp hạ tầng trừu tượng.

  • Tính đóng góp gói (encapsulation) và che cất giấu thông tin (information hiding): Tính hóa học này sẽ không được cho phép người tiêu dùng những đối tượng người tiêu dùng thay cho thay đổi hiện trạng nội bên trên của một đối tượng người tiêu dùng. Chỉ sở hữu những cách thức nội bên trên của đối tượng người tiêu dùng được cho phép thay cho thay đổi hiện trạng của chính nó. Việc được cho phép môi trường xung quanh bên phía ngoài hiệu quả lên những tài liệu nội bên trên của một đối tượng người tiêu dùng Theo phong cách nào là là trọn vẹn tùy nằm trong vô người ghi chép mã. Đây là đặc thù đáp ứng sự kiêm toàn của đối tượng người tiêu dùng.

  • Tính nhiều hình (polymorphism): Thể hiện tại trải qua việc gửi những thông điệp (message). Việc gửi những thông điệp này hoàn toàn có thể đối chiếu như việc gọi những hàm bên phía trong của một đối tượng người tiêu dùng. Các cách thức người sử dụng vấn đáp cho 1 thông điệp tiếp tục tùy từng đối tượng người tiêu dùng nhưng mà thông điệp này được gửi cho tới sẽ có được phản xạ không giống nhau. Người xây dựng hoàn toàn có thể khái niệm một đặc điểm (chẳng hạn trải qua thương hiệu của những phương thức) cho 1 loạt những đối tượng người tiêu dùng sát nhau tuy nhiên Khi thực hành thì người sử dụng và một tên thường gọi nhưng mà sự thực hành của từng đối tượng người tiêu dùng tiếp tục tự động hóa xẩy ra ứng theo gót đặc điểm của từng đối tượng người tiêu dùng nhưng mà không trở nên lầm lẫn.

Ví dụ Khi khái niệm nhì đối tượng người tiêu dùng "hinh_vuong" và "hinh_tron" thì sở hữu một cách thức công cộng là "chu_vi". Khi gọi cách thức này thì nếu như đối tượng người tiêu dùng là "hinh_vuong" nó sẽ bị tính theo gót công thức không giống với Khi đối tượng người tiêu dùng là "hinh_tron".
  • Tính kế tiếp thừa (inheritance): Đặc tính này được cho phép một đối tượng người tiêu dùng hoàn toàn có thể đã có sẵn trước những đặc điểm nhưng mà đối tượng người tiêu dùng không giống vẫn sở hữu trải qua thừa kế. Vấn đề này được cho phép những đối tượng người tiêu dùng share hoặc không ngừng mở rộng những đặc điểm sẵn sở hữu nhưng mà ko cần tổ chức khái niệm lại. Tuy nhiên, ko cần ngôn từ lý thuyết đối tượng người tiêu dùng nào là cũng có thể có đặc thù này.

Một điểm mới mẻ về hình mẫu hình, về quan tiền điểm[sửa | sửa mã nguồn]

OOP vẫn còn đó là 1 trong những vấn đề của khá nhiều giành cãi về khái niệm chuẩn chỉnh xác hoặc về những nguyên tắc của chính nó.

Trong dạng tổng quát tháo nhất, OOP được hiểu Theo phong cách là 1 trong những loại thực nghiệm ghi chép công tác văn phiên bản được phân cung cấp rời khỏi trở thành nhiều tế bào đun (module), nhưng mà từng tế bào đun vào vai như một tấm vỏ bao phủ thay mặt đại diện cho từng loại tài liệu.

Những định nghĩa contact và được chung nhặt lại muốn tạo trở thành một phạm vi mang lại việc xây dựng. Các triết lý ở phía đằng sau việc lý thuyết đối tượng người tiêu dùng vẫn trở thành mạnh mẽ và tự tin muốn tạo trở thành một sự quy đổi hình mẫu hình vô ngành xây dựng.

Những hình mẫu hình khác ví như xây dựng tính năng và xây dựng giấy tờ thủ tục triệu tập đa phần bên trên những hành vi, còn xây dựng lô gíc lại triệu tập vô những xác minh phù hợp nhằm kích hoạt sự thực đua của mã công tác.

OOP vẫn cải tiến và phát triển một cơ hội song lập từ những việc nghiên cứu và phân tích về những ngôn từ lý thuyết của khối hệ thống tế bào phỏng, này là SIMULA 67, và từ những việc nghiên cứu và phân tích những phong cách xây dựng của khối hệ thống có tính tin tưởng cao, này là những phong cách xây dựng CPU và năng lực cơ phiên bản của những hệ quản lý điều hành.

Một tính năng rực rỡ của OOP là sự việc xử lý những loại con cái của những loại tài liệu.

Dữ liệu của những đối tượng người tiêu dùng, một cơ hội tổng quát tháo, được yên cầu vô design nhằm vừa lòng những đòi hỏi của những người xây dựng (tức là những lớp).

Các loại tài liệu bị số lượng giới hạn tăng những ĐK tuy nhiên sở hữu nằm trong loại tài liệu với loại không trở nên buộc ràng vày những ĐK cơ, gọi là kiểu tài liệu con. Cả nhì loại loại tài liệu này đều phụ thuộc vào và đều được thay đổi vày những hành xử (tức là những phương thức) và được khái niệm. Các ĐK hoặc đòi hỏi này hoàn toàn có thể được khai báo rõ rệt hoặc được fake thiết thừa nhận ngầm vày người xây dựng. Các ngôn từ lý thuyết đối tượng người tiêu dùng cung ứng nhiều hình thức mang lại việc xác minh rằng những fake thiết cơ sở hữu tính địa hạt cho 1 phần của công tác. Các hình thức này này hoàn toàn có thể hiểu thấy trong số tư liệu về những công tác lý thuyết đối tượng người tiêu dùng.

OOP tự động nó vẫn đang rất được dùng làm khuyến mại mang lại nhiều thành phầm và cty. Các khái niệm thời điểm hiện tại và thuận lợi của những đặc điểm của OOP thông thường được màu mẽ hóa vày những mục tiêu của thị ngôi trường thương nghiệp. Tương tự động, nhiều ngôn từ xây dựng sở hữu những ý kiến quan trọng về OOP nhưng mà nó không nhiều tổng quát tháo vô một vài góc nhìn.

Các khái niệm đúng chuẩn của OOP sẽ có được sự khác lạ tùy từng ý kiến. điều đặc biệt, những ngôn từ sở hữu loại tĩnh thông thường sở hữu tầm nhìn tương đối không giống với những ngôn từ sở hữu loại động về OOP, lý do là vì như thế bọn chúng triệu tập bên trên thời hạn dịch hoặc triệu tập vô thời hạn thực hành của những công tác.

OOP thông thường sẽ là một hình mẫu hình rộng lớn là 1 trong những loại hay như là một phong thái xây dựng nhằm mục đích nhấn mạnh vấn đề vô điểm cần thiết là OOP hoàn toàn có thể thay cho thay đổi cách thức cải tiến và phát triển ứng dụng bằng phương pháp thay cho thay đổi trí tuệ của những người dân xây dựng và những kỹ sư ứng dụng về ứng dụng.

Mẫu hình của OOP đa phần ko cần là loại xây dựng nhưng mà là loại design. Một khối hệ thống được design vày khái niệm của những đối tượng người tiêu dùng nhưng mà những đối tượng người tiêu dùng này tiếp tục tồn bên trên vô khối hệ thống cơ, vô mã nhưng mà hiện tại thao tác ko tương mến với đối tượng người tiêu dùng, hoặc là vô người tiêu dùng đối tượng người tiêu dùng bởi tác động của đặc thù đóng góp của đối tượng người tiêu dùng.

Cũng nên chú ý rằng sở hữu sự khác lạ thân thiết hình mẫu hình lý thuyết đối tượng người tiêu dùng và lý thuyết những khối hệ thống. OOP triệu tập bên trên những đối tượng người tiêu dùng như thể những đơn vị chức năng của một khối hệ thống, trong những lúc cơ, lý thuyết những khối hệ thống lại tự động nó chỉ triệu tập vô khối hệ thống. Như là phần trung gian ngoan, người tớ hoàn toàn có thể nhìn thấy những dạng thức design ứng dụng hoặc những chuyên môn không giống người sử dụng những lớp và những đối tượng người tiêu dùng như thể những viên gạch men trong mỗi bộ phận to hơn. Những bộ phận này hoàn toàn có thể được coi như thể bước trung gian ngoan kể từ hình mẫu hình lý thuyết đối tượng người tiêu dùng cho tới những quy mô "định phía sinh sống thực" rộng lớn của lý thuyết những khối hệ thống.

Các hình mẫu hình lý thuyết đối tượng người tiêu dùng con[sửa | sửa mã nguồn]

Có nhiều phong thái lập trình hướng đối tượng. Sự không giống nhau Một trong những phong thái này là tùy từng việc những ngôn từ xây dựng chú ý vô góc nhìn nào là của sự việc thuận tiện của lý thuyết đối tượng người tiêu dùng và vô việc phối kết hợp những cấu tạo trong số phương cơ hội không giống nhau.

OOP với những ngôn từ cấu trúc[sửa | sửa mã nguồn]

Trong những ngôn từ cấu tạo, OOP thông thường xuất hiện tại như là 1 trong những dạng nhưng mà ở cơ những loại tài liệu được không ngừng mở rộng nhằm hành xử tương tự như là 1 trong những loại của một đối tượng người tiêu dùng vô OOP, trọn vẹn tương tự động cho 1 loại tài liệu trừu tượng với việc không ngừng mở rộng như là sự việc thừa kế. Mỗi cách thức thực rời khỏi là 1 trong những công tác con cái, một cơ hội cú pháp, số lượng giới hạn nội vô một tấm.

Các quy mô vẹn toàn hình mẫu cơ bản[sửa | sửa mã nguồn]

Khác với cơ hội dùng lớp, nguyên mẫu là 1 trong những quy mô không giống không nhiều được nghe biết rộng lớn, nó tăng thêm ý nghĩa đạt cho tới việc share xử sự theo gót lý thuyết đối tượng người tiêu dùng. Sau Khi đối tượng người tiêu dùng được khái niệm, một đối tượng người tiêu dùng không giống tương tự động sẽ tiến hành khái niệm kể từ đối tượng người tiêu dùng lúc đầu. Ngôn ngữ vẹn toàn hình mẫu cơ phiên bản được nghe biết tối đa là JavaScript nhưng mà đấy là một sự thiết lập của ECMAScript. Self, một ngôn từ xây dựng được cải tiến và phát triển vày Sun Microsystems cũng là 1 trong những ví dụ của ngôn từ người sử dụng vẹn toàn hình mẫu mang lại việc share xử sự chứ không hề người sử dụng sự phân lớp. NewtonScript, Act1, Io và Delegation là những ví dụ không giống. điều đặc biệt, Hybrid và Exemplars dùng cả nhì quy mô vẹn toàn hình mẫu và phân lớp. Trong những khối hệ thống vẹn toàn hình mẫu, những đối tượng người tiêu dùng tự động bọn chúng là những khuôn thức (template), trong những lúc những khối hệ thống phân lớp người sử dụng những lớp như thể những khuôn thức cho những đối tượng người tiêu dùng.

Các tiếp cận loại phân lớp thì lúc lắc phần đông vô OOP nhưng mà nhiều người tiếp tục khái niệm những đối tượng người tiêu dùng như thể sở hữu đặc thù đóng góp nhưng mà việc share tài liệu xẩy ra vày sự phân lớp và vày tính thừa kế. Mặc mặc dù vậy, định nghĩa tổng quát tháo rộng lớn "chia sẻ ứng xử" được thừa nhận như thể những chuyên môn thay cho thế (như tình huống vẹn toàn mẫu).

(Xem tăng Lập trình vẹn toàn hình mẫu cơ bản)

Mô hình đối tượng người tiêu dùng cơ bản[sửa | sửa mã nguồn]

Lập trình phía đối tượng người tiêu dùng cơ phiên bản là trung tâm về sự tạo nên trở thành của những đối tượng người tiêu dùng và những tương tác của bọn chúng, tuy nhiên hoàn toàn có thể tiếp tục thiếu hụt lên đường một vài tính năng cần thiết của hình mẫu hình lý thuyết đối tượng người tiêu dùng lớp cơ phiên bản như thể tính thừa kế. Những khối hệ thống đối tượng người tiêu dùng cơ phiên bản vì vậy thông thường ko được coi như thể lý thuyết đối tượng người tiêu dùng vì như thế thay đổi tính thừa kế một cơ hội điển hình nổi bật là 1 trong những nhân tố cốt lõi của OOP.

Ví dụ của tình huống này là ngôn từ Visual Basic với những phiên phiên bản 6.0 hoặc nhỏ rộng lớn.

Định nghĩa chuẩn[sửa | sửa mã nguồn]

Đã có rất nhiều nỗ lực nhằm chuẩn chỉnh hóa những định nghĩa được sử dụng vô xây dựng lý thuyết đối tượng người tiêu dùng. Những định nghĩa và những kết cấu tại đây và được diễn dịch như thể những định nghĩa của OOP:

  • Các loại tài liệu đồng đại số
  • Các lượng tồn bên trên và những tế bào đun
  • Đệ quy
  • Các phiên bản và việc không ngừng mở rộng bản
  • Đa hình biên F

Các nỗ lực lần một khái niệm thống nhất hoặc lý thuyết đứng sau những đối tượng người tiêu dùng dường như không bao nhiêu thành công xuất sắc và thông thường bị phân hóa nặng trĩu. Ví dụ, một vài khái niệm thì triệu tập lên những sinh hoạt lòng tin trong những lúc số không giống lại ngả về sự cấu tạo công tác. Một trong số khái niệm giản dị và đơn giản rộng lớn nhận định rằng OOP là 1 trong những hành xử của việc dùng những biểu đồ dùng cấu tạo tài liệu hoặc dùng những sản phẩm nhưng mà hoàn toàn có thể chứa chấp những hàm và những con cái trỏ thanh lịch những biểu đồ dùng không giống. Sự thừa kế hoàn toàn có thể tổ chức vày nhân phiên bản những biểu đồ dùng này (mà nhiều khi gọi là "nguyên phiên bản hóa").

OOP vô văn lệnh[sửa | sửa mã nguồn]

Trong trong thời gian mới gần đây, xây dựng đối tượng người tiêu dùng cơ phiên bản vẫn quan trọng trở thành phổ cập trong số ngôn từ xây dựng văn mệnh lệnh vì như thế bọn chúng sở hữu tính trừu tượng, tính đóng góp, năng lực tái ngắt dùng, và dễ dàng dùng (trong Khi năng lực thừa kế trong số ngôn từ này vẫn còn đó là những thắc mắc chưa xuất hiện câu trả lời). Smalltalk hoàn toàn có thể là ngôn từ trước tiên sở hữu loại như bên trên, Python và Ruby là những ngôn từ kha khá mới mẻ và được kiến thiết từ trên đầu với phát minh OOP, trong những lúc cơ ngôn từ văn mệnh lệnh Perl vẫn đang rất được kể từ từ thêm nữa những tính năng mới mẻ về lý thuyết đối tượng người tiêu dùng Tính từ lúc phiên phiên bản 5. Khả năng của những đối tượng người tiêu dùng nhằm thể hiện tại "thế giới thực" là 1 trong những nguyên do cho việc phổ cập của JavaScript và ECMAScript, nhưng mà được tranh cãi là phù hợp nhằm thay mặt đại diện mang lại DOM của những làm hồ sơ HTML và XML bên trên Internet.

Xem thêm: karaoke gợi nhớ quê hương

Ví dụ mã mối cung cấp vô C++[sửa | sửa mã nguồn]


Lưu ý:

  • Ví dụ bên trên được ghi chép vô C++ hoàn toàn có thể người sử dụng bất kì trình dịch nào là nhằm dịch trực tiếp rời khỏi luyện tin yêu thực đua. Cụ thể là người sử dụng Borland C++ mang lại Windows hoặc người sử dụng g++ mang lại Linux.
  • Các loại black color là mã mối cung cấp, những loại color không giống là những loại lý giải chân thành và ý nghĩa dùng của OOP.
  • Đòi căn vặn người nắm vững không ít cách sử dụng về ngôn từ xây dựng và trình dịch.
  • Bản thân thiết những lớp Khi khai báo vẫn đang còn tính trừu tượng. Nghĩa là, nó ko dùng thẳng được (mà chỉ hoàn toàn có thể coi là những loại dữ liệu). Chỉ lúc nào người tiêu dùng tiến hành động tác thực thể hóa (instantiate) thì lớp này mới mẻ phát động và tạo nên trở thành một đối tượng người tiêu dùng thực. Trong ví dụ này thì câu mệnh lệnh Inherit1 boy; và câu mệnh lệnh Inherit2 girl; là nhì câu mệnh lệnh nhằm thực thể hóa trở thành nhì đối tượng người tiêu dùng boygirl.
  • Sự tương hỗ những loại đặc điểm mang lại OOP vô C++ vô cùng đa dạng. Ví dụ chỉ nhằm mục đích minh họa những đặc thù cơ phiên bản của OOP.

Một số định nghĩa cần phải biết vô ngôn từ OOP hiện tại đại[sửa | sửa mã nguồn]

Hiện ni những ngôn từ OOP phổ cập nhất đều triệu tập theo gót cách thức phân phần bên trong cơ sở hữu C++, Java, C# và Visual Basic.NET. Ngôn ngữ OOP hoặc thường hay gọi là ngôn từ lập trình hướng đối tượng, là 1 trong những cách thức design và cải tiến và phát triển ứng dụng dựa vào phong cách xây dựng lớp và đối tượng người tiêu dùng. Sau đấy là một vài định nghĩa nhưng mà những ngôn từ này thông thường người sử dụng cho tới.

Lớp (class)

[sửa | sửa mã nguồn]

Một lớp hoàn toàn có thể được hiểu là mẫu hình muốn tạo rời khỏi những đối tượng người tiêu dùng. Trong một tấm, người tớ thông thường người sử dụng những trở thành nhằm tế bào mô tả những tính chất và những hàm nhằm tế bào mô tả những cách thức của đối tượng người tiêu dùng. Khi vẫn khái niệm được lớp, tớ hoàn toàn có thể đưa đến những đối tượng người tiêu dùng kể từ lớp này. Để việc dùng được đơn giản, trải qua khối hệ thống hàm tạo nên (constructor), người tớ người sử dụng lớp như 1 loại tài liệu muốn tạo rời khỏi những đối tượng người tiêu dùng. cc

Lớp con cái (subclass)

[sửa | sửa mã nguồn]

Lớp con cái là 1 trong những lớp thường thì tuy nhiên được thêm đặc thù thừa kế 1 phần hoặc toàn cỗ những đặc điểm của một tấm không giống. Lớp share sự thừa kế gọi là lớp thân phụ (parent class/superclass).

Lớp trừu tượng hoặc lớp hạ tầng trừu tượng (abstract class)[sửa | sửa mã nguồn]

Lớp trừu tượng là 1 trong những lớp nhưng mà nó ko thể thực thể hóa trở thành một đối tượng người tiêu dùng thực dụng chủ nghĩa được. Lớp này được design nhằm mục đích đưa đến một tấm sở hữu những đặc điểm tổng quát tháo tuy nhiên phiên bản thân thiết lớp cơ chưa xuất hiện chân thành và ý nghĩa (hay ko đầy đủ ý nghĩa) nhằm hoàn toàn có thể tổ chức ghi chép mã mang lại việc thực thể hóa. (xem Ví dụ)

Ví dụ: Lớp "hinh" được khái niệm không tồn tại tài liệu nội bên trên và chỉ mất những cách thức (hàm nội tại) "tinh_chu_vi", "tinh_dien_tich". Nhưng vì như thế lớp hình này ko xác lập được khá đầy đủ những đặc điểm của chính nó (cụ thể những trở thành nội bên trên là tọa chừng những đỉnh nếu trong trường hợp là nhiều giác, là lối nửa đường kính và toạ chừng tâm nếu trong trường hợp là hình trụ,...) nên nó chỉ hoàn toàn có thể được ghi chép trở thành một tấm trừu tượng. Sau cơ, người xây dựng hoàn toàn có thể đưa đến những lớp con cái ví dụ như là lớp "tam_giac", lớp "hinh_tron", lớp "tu_giac", v.v... Và trong số lớp con cái này người ghi chép mã tiếp tục cung ứng những tài liệu nội bên trên (như là trở thành nội bên trên r thực hiện nửa đường kính và hằng số nội bên trên Pi mang lại lớp "hinh_tron" và tiếp sau đó ghi chép mã rõ ràng cho những cách thức "tinh_chu_vi" và "tinh_dien_tich").

Phương thức (method)[sửa | sửa mã nguồn]

Phương thức của một tấm thông thường được dùng làm tế bào mô tả những hành động của đối tượng người tiêu dùng (hoặc của lớp). Ví dụ như đối tượng người tiêu dùng nằm trong lớp điện thoại thông minh sở hữu những hành động sau: Đổ chuông, gửi tín hiệu kể từ sóng thanh lịch dạng nghe được, gửi tín hiệu tiếng nói thanh lịch dạng chuẩn chỉnh, gửi tín hiệu lên tổng đài.v.v. Khi design, người tớ hoàn toàn có thể người sử dụng những cách thức nhằm tế bào mô tả và tiến hành những hành động của đối tượng người tiêu dùng. Mỗi cách thức thông thường được khái niệm là 1 trong những hàm, những thao tác nhằm tiến hành hành động này được ghi chép bên trên nội dung của hàm. Khi tiến hành hành động này, đối tượng người tiêu dùng hoàn toàn có thể cần tiến hành những hành động không giống. Ví dụ như điện thoại thông minh cần gửi tín hiệu tiếng nói thanh lịch dạng chuẩn chỉnh trước lúc gửi lên tổng đài. Cho nên một cách thức vô một tấm hoàn toàn có thể dùng cách thức không giống vô quy trình tiến hành hành động của tôi.

Người tớ còn khái niệm tăng vài ba loại cách thức quánh biệt:

  • Hàm tạo nên (constructor) là hàm được dùng làm đưa đến một đối tượng người tiêu dùng, thiết lập những độ quý hiếm lúc đầu cho những tính chất của đối tượng người tiêu dùng cơ.
  • Hàm diệt (destructor) là hàm người sử dụng vô việc làm sạch sẽ bộ nhớ lưu trữ vẫn dùng làm lưu đối tượng người tiêu dùng và diệt vứt thương hiệu của một đối tượng người tiêu dùng sau thời điểm vẫn người sử dụng hoàn thành, vô cơ hoàn toàn có thể bao hàm cả việc xóa những con cái trỏ nội bên trên và trả về những phần bộ nhớ lưu trữ nhưng mà đối tượng người tiêu dùng vẫn người sử dụng.

Nhiều lớp tủ sách đã có sẵn trước hàm tạo nên khoác quyết định (thông thông thường không tồn tại tham lam số) và hàm huỷ.

Thuộc tính (attribute)[sửa | sửa mã nguồn]

Thuộc tính của một tấm bao hàm những trở thành, những hằng, hoặc thông số nội bên trên của lớp cơ. Tại trên đây, tầm quan trọng cần thiết nhất của những tính chất là những trở thành vì như thế bọn chúng tiếp tục hoàn toàn có thể bị thay cho thay đổi vô trong cả quy trình sinh hoạt của một đối tượng người tiêu dùng. Các tính chất hoàn toàn có thể được xác lập loại và loại của bọn chúng hoàn toàn có thể là những loại tài liệu truyền thống hoặc cơ là 1 trong những lớp vẫn khái niệm từ xưa. Như vẫn ghi, Khi một tấm và được thực thể hoá trở thành đối tượng người tiêu dùng rõ ràng thì hội tụ những độ quý hiếm của những trở thành nội bên trên thực hiện trở thành hiện trạng của đối tượng người tiêu dùng. Giống như tình huống của cách thức, tùy từng người ghi chép mã, trở thành nội bên trên hoàn toàn có thể chỉ được sử dụng mặt mày trong số cách thức của chủ yếu lớp cơ, hoàn toàn có thể được cho phép những câu mệnh lệnh bên phía ngoài lớp, hoặc chỉ được cho phép những lớp sở hữu mối quan hệ quan trọng như thể mối quan hệ lớp con cái, (và mối quan hệ đồng minh (friend) vô C++) được quy tắc người sử dụng cho tới nó (hay thay cho thay đổi độ quý hiếm của nó). Mỗi tính chất của một tấm còn được gọi là thành viên dữ liệu của lớp cơ.

Quan hệ thân thiết lớp và đối tượng[sửa | sửa mã nguồn]

Lớp vô ý niệm thường thì là cơ hội phân loại những thực thể dựa vào những điểm sáng công cộng của những thực thể cơ. Do cơ lớp là định nghĩa mang tính chất trừu tượng hóa vô cùng cao. Ví dụ như lớp "người" dùng làm chỉ những thực thể sinh sống bên trên Trái Đất sở hữu những nằm trong tính: sở hữu nhì chân, nhì bàn tay khôn khéo, sở hữu trí tuệ, ngôn từ v.v và sở hữu phương thức: tiếp xúc vày ngôn từ, trí tuệ, lên đường, đứng vày nhì chân, v.v... Khi cơ nhì người rõ ràng ông A, ông B là những đối tượng người tiêu dùng nằm trong lớp người. Trong ngôn từ xây dựng, tớ cũng hiểu định nghĩa lớp tương tự động, do đó tớ sở hữu quy trình "Thực thể hóa" sau, tạo nên một đối tượng người tiêu dùng nằm trong một tấm và được tớ khái niệm (phân loại).

Thực thể (instance)[sửa | sửa mã nguồn]

Thực thể hóa (instantiate) là quy trình khai báo để sở hữu một thương hiệu (có thể được coi như là 1 trong những biến) phát triển thành một đối tượng người tiêu dùng kể từ một tấm nào là cơ.

Một lớp sau thời điểm được tổ chức thực thể hóa để sở hữu một đối tượng người tiêu dùng rõ ràng gọi là 1 trong những thực thể. Hay rằng ngược lại một thực thể là 1 trong những đối tượng người tiêu dùng riêng rẽ lẻ của một tấm vẫn quyết định trước. Như những trở thành thường thì, nhì thực thể của và một lớp hoàn toàn có thể sở hữu hiện trạng nội bên trên không giống nhau (xác quyết định vày những độ quý hiếm hiện tại sở hữu của những trở thành nội tại) và vì thế trọn vẹn song lập nhau nếu như không tồn tại đòi hỏi gì quan trọng kể từ người xây dựng. Thực thể hóa: tương tự như cá thể hóa. Một lớp Khi được "cá nhân hóa" tiếp tục trở thành một đối tượng người tiêu dùng rõ ràng.

Công nằm trong (public)[sửa | sửa mã nguồn]

Công nằm trong là 1 trong những đặc thù được dùng làm gán cho những cách thức, những trở thành nội bên trên, hoặc những lớp nhưng mà Khi khai báo thì người xây dựng vẫn được cho phép những câu mệnh lệnh bên phía ngoài cũng giống như các đối tượng người tiêu dùng không giống được quy tắc người sử dụng cho tới nó.

Ví dụ: Trong C++ khai báo public: int my_var; thì trở thành my_var sở hữu nhì đặc thù là tính công nằm trong và là 1 trong những integer cả nhì đặc thù này thích hợp trở thành đặc điểm của trở thành my_var khiến cho nó hoàn toàn có thể được dùng hoặc thay cho thay đổi độ quý hiếm của chính nó (bởi những câu lệnh) ở từng điểm bên phía ngoài láo nháo bên phía trong của lớp.

Riêng tư (private)[sửa | sửa mã nguồn]

Riêng tư là sự việc thể hiện tại đặc thù đóng góp vượt trội nhất (của một đặc điểm hay như là một lớp). Khi người sử dụng đặc thù này gán cho 1 trở thành, một cách thức thì trở thành hoặc cách thức cơ chỉ hoàn toàn có thể được dùng bên phía trong của lớp nhưng mà bọn chúng được khái niệm. Mọi nỗ lực người sử dụng thẳng cho tới bọn chúng kể từ bên phía ngoài qua quýt những câu mệnh lệnh hoặc kể từ những lớp con cái sẽ ảnh hưởng lắc đầu thường hay bị lỗi.

Bảo tồn (protected)[sửa | sửa mã nguồn]

Tùy theo gót ngôn từ, sẽ có được vài ba điểm nhỏ không giống nhau về phong thái hiểu đặc thù này. Nhìn công cộng đấy là đặc thù nhưng mà Khi dùng làm vận dụng cho những cách thức, những trở thành nội bên trên, hoặc những lớp thì chỉ mất vô nội cỗ của lớp cơ hoặc những lớp con cái của chính nó (hay vô nội cỗ một gói như vô Java) được quy tắc gọi cho tới hoặc người sử dụng cho tới những cách thức, trở thành hoặc lớp cơ.

So với đặc thù riêng biệt thì tính bảo đảm rộng thoải mái rộng lớn về nghĩa share tài liệu hoặc tính năng. Nó được cho phép một vài tình huống được sử dụng cho tới những đặc điểm của một tấm (từ một tấm con cái chẳng hạn).

Lưu ý: Các đặc thù công nằm trong, riêng biệt và bảo đảm nhiều khi còn được dùng làm thông tư cho 1 lớp con cái phương pháp thừa kế một tấm thân phụ như vô C++.

Đa thừa kế (multiple inheritance)[sửa | sửa mã nguồn]

Đây là 1 trong những đặc thù được cho phép một tấm con cái sở hữu năng lực thừa kế thẳng đồng thời nhiều tầng không giống.

Vài vấn đề cần chú ý Khi ghi chép mã người sử dụng đặc thù nhiều kế tiếp thừa:

  • Khi ham muốn sở hữu một sự thừa kế kể từ nhiều tầng thân phụ thì những lớp này rất cần được song lập và quan trọng thương hiệu của những tài liệu hoặc hàm được cho phép thừa kế cần mang tên không giống nhau nhằm rời lỗi "ambiguity". Bởi vì như thế khi cơ trình dịch sẽ không còn thể xác lập được là lớp con cái tiếp tục quá kế tiếp thương hiệu nào là của những lớp thân phụ.
  • Nhiều ngôn từ, ví như Java, không tồn tại nhiều thừa kế, tuy nhiên bọn chúng sở hữu định nghĩa skin Interface. Với Interface, tớ hoàn toàn có thể sở hữu đa số những quyền lợi nhưng mà nhiều thừa kế tạo nên.

Ngoài những định nghĩa bên trên, tùy từng ngôn từ, hoàn toàn có thể sẽ có được những tính năng OOP riêng lẻ được cung cấp thêm nữa.

Lịch sử[sửa | sửa mã nguồn]

Khái niệm về những đối tượng người tiêu dùng và thực thể vô khoa học tập PC được nổi tiếng kể từ khối hệ thống PDP-1 của MIT. Đây có lẽ rằng là Ví dụ nhanh nhất của phong cách xây dựng hạ tầng sở hữu năng lực thực. Một dẫn chứng sớm không giống của OOP được nhìn thấy qua quýt Sketchpad ghi chép vày Ivan Sutherland vô năm 1963, tuy vậy, trên đây chỉ là 1 trong những phần mềm chứ không hề là 1 trong những hình mẫu hình xây dựng.

Ngôn ngữ lập trình hướng đối tượng trước tiên là Simula, ngôn từ này được design nhằm người sử dụng trong số việc tế bào phỏng, được tạo nên vày Ole-Johan Dahl và Kristen Nygaard nằm trong Trung tâm Máy tính Na Uy ở Oslo. Các kiến thức và kỹ năng vô ngôn từ này tiếp sau đó vẫn được sử dụng trong vô số nhiều ngôn từ không giống, chính thức kể từ Lisp và Pascal cho tới chúng ta ngôn từ Smalltalk.

Lập trình phía đối tượng người tiêu dùng và được cải tiến và phát triển như thể cách thức xây dựng chủ yếu từ nửa những năm 1990 lý do đáng chú ý là sự việc tác động của C++, một ngôn từ không ngừng mở rộng của C. Địa vị cai trị của OOP và được gia tăng vững chãi vày sự phổ cập của những GUI dành riêng cho ngôn từ lập trình hướng đối tượng càng ngày càng tiện lợi. Một Ví dụ về mối quan hệ thân mật và gần gũi của tủ sách GUI động và ngôn từ OOP là ứng dụng Cocoa, nó là khuông hạ tầng của Mac OS X dược ghi chép vày Objective C (Objective C là 1 trong những loại ngôn từ phía đối tượng người tiêu dùng không ngừng mở rộng của C với việc thông tin động). Công cụ mang lại OOP cũng khá được nâng lên phần "lập trình tinh chỉnh và điều khiển theo gót sự kiện" (mặc mặc dù định nghĩa này không chỉ là dành riêng cho OOP).

Tại Zürich, Niklaus Wirth và những tập sự vẫn theo gót dõi những vấn đề như thể tài liệu trừu tượng và xây dựng tế bào đun. Modula-2 bao hàm cả nhì đặc điểm cơ. Thiết kế tiếp ngay lập tức tiếp theo sau là Oberon bao hàm sự tiếp cận riêng lẻ với việc lý thuyết đối tượng người tiêu dùng, những lớp,... Sự tiếp cận này sẽ không như Smalltalk, và cũng khác hoàn toàn C++.

Các tính năng của phía đối tượng người tiêu dùng đã và đang đang rất được thêm nữa nhiều ngôn từ vô trong cả thời hạn cơ cho dù là Ada, BASIC, Lisp, Fortran, Pascal và nhiều nữa. Việc thêm vào đó những tính năng cơ cho những ngôn từ nhưng mà được trước cơ ko mái ấm quyết định design mang lại bọn chúng tức thì từ trên đầu cũng thông thường dẫn cho tới nhiều trở ngại vô năng lực tương mến (với mã mối cung cấp ghi chép cho những phiên phiên bản cũ) và năng lực gia hạn mã. Điển hình của tình huống này là Pascal và Visual Basic. Các ngôn từ đơn thuần phía đối tượng người tiêu dùng, ở phía không giống, lại thiếu hụt những đặc điểm nhưng mà nhiều người xây dựng tùy thuộc vào. Để bắc cầu mang lại khoảng tầm rỗng tuếch này, nhiều nỗ lực và được xúc tiến thủ muốn tạo rời khỏi những ngôn từ đặt điều hạ tầng bên trên những cách thức phía đối tượng người tiêu dùng tuy nhiên lại được cho phép người sử dụng nhiều đặc điểm xây dựng cấu tạo theo gót những phương cơ hội "an toàn". Ngôn ngữ Eiffel của Bertrand Meyer vẫn sớm thành công xuất sắc với những tiềm năng này.

Trong những năm vẫn qua quýt, Java được sử dụng rộng thoải mái 1 phần là vì sự tương tự động với C và C++, tuy nhiên có lẽ rằng bởi phần không giống cần thiết rộng lớn là sự việc lắp ráp dùng máy ảo nhưng mà mái ấm ý là thực đua và một mã mối cung cấp mang lại nhiều nền tảng không giống nhau. .NET của Microsoft cũng mở màn với những mái ấm ý tương tự động và thêm vào đó việc tương hỗ nhiều ngôn từ hoặc những sự trở thành thể của những ngôn từ cũ (như tình huống C# và Visual Basic).

Xem thêm: trường đại học quảng bình

Gần trên đây, một vài ngôn từ xuất hiện tại với tính năng đó là lý thuyết đối tượng người tiêu dùng tuy nhiên lại tương mến được với cách thức giấy tờ thủ tục như thể Python và Ruby. Cạnh cạnh Java, C# và Visual Basic.NET là nhì ngôn từ OOP cần thiết thời điểm hiện tại design vày Microsoft.

Giống như xây dựng giấy tờ thủ tục vẫn dẫn cho tới việc tinh nghịch thanh lọc những chuyên môn như thể xây dựng cấu tạo, ứng dụng phía đối tượng người tiêu dùng tiến bộ design những cách thức bao hàm những sự tinh nghịch thanh lọc. Chẳng hạn như thể việc phần mềm những dạng thức design, design vày thích hợp đồng và những ngôn từ quy mô vô cơ sở hữu UML.

Các ngôn ngữ[sửa | sửa mã nguồn]

Bài chính: Ngôn ngữ lập trình hướng đối tượng

  • C#
  • C++
  • Common Lisp Object System
  • Eiffel
  • Fortran 2003
  • Java
  • Objective-C
  • OCaml
  • Object Pascal
  • Pascal
  • Perl
  • PHP
  • Python
  • Ruby
  • Simula
  • Sleep
  • Smalltalk
  • Ada
  • Visual FoxPro
  • Actionscript
  • Visual Basic
  • Swift

Đọc thêm[sửa | sửa mã nguồn]

  • Grady Booch: Object-Oriented Analysis and Design with Applications, Addison-Wesley, ISBN 0-8053-5340-2
  • Alan Kay: The Early History of Smalltalk
  • Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Patterns: Elements of Reusable Object Oriented Software, Addison-Wesley, ISBN 0-201-63361-2
  • Bertrand Meyer: Object-Oriented Software Construction, Prentice Hall, ISBN 0-13-629155-4
  • James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy, William Lorensen: Object-Oriented Modeling and Design, Prentice Hall, ISBN 0-13-629841-9
  • Ivar Jacobson: Object-Oriented Software Engineering: A Use Case-Driven Approach, Addison-Wesley, ISBN 0-201-54435-0
  • Harold Abelson, Gerald Jay Sussman, Julie Sussman: Structure and Interpretation of Computer Programs, The MIT Press, ISBN 0-262-01153-0
  • Martin Abadi, Luca Cardelli: A Theory of Objects, Springer-Verlag, ISBN 0-387-94775-2
  • Paul Harmon, William Morrissey: The Object Technology Casebook - Lessons from Award-Winning Business Applications, John Wiley & Sons, ISBN 0-471-14717-6
  • David A. Taylor: Object-Oriented Information Systems - Planning and Implementation, John Wiley & Sons, ISBN 0-471-54364-0
  • Peter Eeles, Oliver Sims: Building Business Objects, John Wiley & Sons, ISBN 0-471-19176-0

Các bài bác liên hệ[sửa | sửa mã nguồn]

  • Object-oriented programming language
  • Aspect-oriented programming
  • Programming paradigm
  • Software componentry
  • Interface mô tả tìm kiếm language
  • Distributed programming
  • List of object-oriented programming terms
  • Design pattern (computer science)
  • Refactoring
  • CORBA
  • Globus
  • DCOM
  • Glossary of object-oriented programming

Tham khảo[sửa | sửa mã nguồn]

  1. ^ . | last = Kindler | first = E. | last2 = Krivy | first2 = I. | title = Object-Oriented Simulation of systems with sophisticated control | publisher = International Journal of General Systems | year = 2011 | pages = 313–343}}
  2. ^ Lewis, John; Loftus, William (2008). Java Software Solutions Foundations of Programming Design 6th ed. Pearson Education Inc. ISBN 0-321-53205-8., section 1.6 "Object-Oriented Programming"

Liên kết ngoài[sửa | sửa mã nguồn]

  • Introduction to lớn OOP Lưu trữ 2005-09-22 bên trên Wayback Machine
  • Introduction to lớn Object-Oriented Programming Lưu trữ 2005-09-24 bên trên Wayback Machine
  • Structured Programming vs Object-Oriented Programming Lưu trữ 2005-05-22 bên trên Wayback Machine
  • Object-oriented programming FAQ Lưu trữ 2006-01-27 bên trên Wayback Machine
  • Example of the subtyping problem
  • What are OOP's Jargons and Complexities
  • Object-Oriented Design Principles Lưu trữ 2006-02-05 bên trên Wayback Machine
  • The report "Object Orientation Redefined" Lưu trữ 2005-09-05 bên trên Wayback Machine outlines how OO has been considered a thinking tool, i.e. "we view the world in objects", and how such an approach may further our understanding of object-oriented formalization.

Các phê phán[sửa | sửa mã nguồn]

  • Criticism of OOP Lưu trữ 2005-07-29 bên trên Wayback Machine
  • Objects Have Failed
  • Arguments Against OOP (C2 wiki discussion)
  • Why Paul Graham is Creating a New Language Without OOP