✨Đối tượng thượng đế (Lập trình máy tính)

Đối tượng thượng đế (Lập trình máy tính)

Trong lập trình hướng đối tượng, một Đối tượng thượng đế (tiếng Anh: God object) là một đối tượng biết quá nhiều hoặc làm quá nhiều. Đối tượng thượng đế là một ví dụ về (anti-pattern).

Một kỹ thuật lập trình phổ biến là một vấn đề lớn thành nhiều vấn đề nhỏ hơn (chiến lược chia để trị) và tạo ra giải pháp cho từng vấn đề. Một khi các vấn đề nhỏ hơn được giải quyết, thì vấn đề lớn nói chung cũng đã được giải quyết. Do đó, một đối tượng nhất định cho một vấn đề nhỏ thì chỉ cần biết về chính nó thôi. Tương tự như vậy, chỉ có 1 tập hợp các vấn đề mà một đối tượng cần giải quyết: các vấn đề của chính nó.

Ngược lại, một chương trình sử dụng một Đối tượng thượng đế thì lại không theo hướng tiếp cận này. Hầu hết các chức năng tổng thể của chương trình như vậy thì đều được code thành một đối tượng "biết tuốt" đơn nhất, bảo quản hầu hết thông tin về toàn bộ chương trình và cũng cung cấp hầu hết các phương thức để thao tác với các dữ liệu này. Bởi vì đối tượng này chứa rất nhiều dữ liệu và đòi hỏi rất nhiều phương thức, nên vai trò của nó trong chương trình trở nên giống như Thượng đế (biết tất cả và bao quát tất cả). Thay vì việc 'các đối tượng chương trình' giao tiếp trực tiếp với nhau, thì 'các đối tượng khác trong chương trình' dựa dẫm vào Đối tượng thượng đế đơn nhất đấy cho hầu hết thông tin và tương tác của chúng. Vì đối tượng này được (được tham chiếu) với rất là nhiều mã khác, nên việc bảo trì trở nên khó khăn hơn so với hệ quả khi thiết kế dàn trải đều ra các đối tượng lẻ. 'Những thay đổi được thực hiện cho đối tượng đấy vì lợi ích cho một thường quy' thì có thể có tác dụng ngoài ý muốn lên các thường quy không liên quan khác.

Một Đối tượng thượng đế là 'thứ tương tự trong lập trình hướng đối tượng' cho việc không dùng chương trình con trong các ngôn ngữ lập trình thủ tục, hoặc sử dụng quá nhiều biến toàn cục để lưu trữ thông tin trạng thái.

Tuy rằng việc tạo một Đối tượng thượng đế thì thường được coi là sự thực hành lập trình không tốt, kỹ thuật này đôi khi được sử dụng cho các môi trường lập trình chặt chẽ (như vi điều khiển), tại đó việc tăng hiệu suất và sự tập trung kiểm soát thì quan trọng hơn tính khả bảo trì và sự tao nhã lập trình.

👁️ 0 | 🔗 | 💖 | ✨ | 🌍 | ⌚
Trong lập trình hướng đối tượng, một **Đối tượng thượng đế** (tiếng Anh: God object) là một đối tượng _biết quá nhiều_ hoặc _làm quá nhiều_. Đối tượng thượng đế là một ví dụ về
**Lập trình máy tính** hay **lập chương trình máy tính,** thường gọi tắt là **lập trình** (, hay _programming_), là việc lập ra chương trình làm việc cho máy có bộ xử lý, nói riêng
nhỏ| Chương trình máy tính "Xin chào, thế giới" của [[Brian Kernighan (1978) ]] **Chương trình máy tính** là tập hợp các câu lệnh thực hiện một tác vụ cụ thể khi được máy tính
Trong lập trình hướng đối tượng, **lớp** (**class**) là một chương trình-mã-khuôn mẫu có thể mở rộng được để tạo các đối tượng, cung cấp giá trị khởi tạo cho trạng thái (biến thành viên)
Trong lập trình hướng đối tượng, **hàm hủy** (tiếng Anh: _destructor_, viết tắt: _dtor_) là một phương thức được gọi tự động để hủy bỏ một đối tượng. Điều này xảy ra khi thời gian
phải|nhỏ|402x402px|[[Mã nguồn của một chương trình máy tính đơn giản được viết bằng ngôn ngữ lập trình C. Khi được biên dịch và chạy, nó sẽ cho kết quả "Hello, world!".]] **Ngôn ngữ lập trình**
**Lập trình hướng đối tượng** () là một mẫu hình lập trình dựa trên khái niệm "đối tượng", mà trong đó, đối tượng chứa đựng các dữ liệu trong các trường, thường được gọi là
thumb|Minh họa mã nguồn [[Java (programming language)|Java với comment **mở đầu** được biểu thị bằng màu **đỏ** và comment **nội dòng** bằng màu **lục**. **Mã chương trình** là bằng màu **lam**.]]Trong lập
Trong lập trình, **tham số** là biến được thu nhận bởi một chương trình con. Tại thời gian chạy, chương trình con sử dụng các giá trị được gán cho các tham số để thay
Trong công nghệ phần mềm và lý thuyết ngôn ngữ lập trình, **nguyên tắc trừu tượng** (tiếng Anh: _abstraction principle_ hay _principle of abstraction_) là một phương châm cơ bản nhằm giảm sự trùng lặp
**Kotlin** là một ngôn ngữ lập trình kiểu tĩnh chạy trên máy ảo Java (JVM) và có thể được biên dịch sang mã nguồn Java hay sử dụng cơ sở hạ tầng trình biên dịch
**Pascal** là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh và thủ tục, được Niklaus Wirth phát triển vào năm 1970. Pascal là ngôn ngữ lập trình đặc biệt thích hợp
[[Phần cứng|Phần cứng máy tính là nền tảng cho xử lý thông tin (sơ đồ khối). ]] **Lịch sử phần cứng máy tính** bao quát lịch sử của phần cứng máy tính, kiến trúc của
**Java** (phiên âm Tiếng Việt: "_Gia-va_") là một ngôn ngữ lập trình hướng đối tượng, dựa trên lớp được thiết kế để có càng ít phụ thuộc thực thi càng tốt. Nó là ngôn ngữ
Khoa học máy tính nghiên cứu các cơ sở lý thuyết của thông tin và tính toán, cùng với các kỹ thuật thực tiễn để thực hiện và
thumb|right|upright=1.2|Trẻ em được dạy cách sử dụng máy tính xách tay cá nhân; màn hình CRT, bàn phím và chuột máy tính để bàn cũ hơn (thời 1990) có thể nhìn thấy trong nền. **Máy
thumb|**[[Phép tính lambda** là một hệ thống hình thức để định nghĩa hàm, ứng dụng hàm và đệ quy được Alonzo Church đề xuất vào những năm 193x.]] **Lý thuyết ngôn ngữ lập trình** (thường
nhỏ|Một chiếc laptop [[Lenovo "thời hiện đại"]] **Máy tính xách tay** hay **máy vi tính xách tay** (Tiếng Anh: **laptop computer** hay **laptop PC**) là một chiếc máy tính cá nhân nhỏ gọn có thể
**D** là một ngôn ngữ lập trình hệ thống hướng đối tượng, dùng câu lệnh, đa mẫu hình do Walter Bright của Digital Mars tạo ra và phát hành năm 2001. Quá trình thiết kế
Trong lập trình máy tính, **tầm vực** (tiếng Anh: _scope_) của một ràng buộc tên – liên kết tên với một thực thể, ví dụ như biến – là một vùng của chương trình máy
Trong khoa học máy tính, **ngôn ngữ máy tính** là hệ thống giao tiếp với máy tính. Các ngôn ngữ như vậy được sử dụng để tạo **mã máy tính** hoặc **mã** **chương trình**, tập
Trong khoa học máy tính, một hàm hay biểu thức được cho là có **hiệu ứng lề** hay **tác dụng phụ** (_side effect_) nếu nó thay đổi một số trạng thái ngoài tầm vực của
Trong lập trình máy tính, một **biến** (_variable_) hay **vô hướng** (_scalar_) là một vị trí lưu trữ gắn liền với một tên tượng trưng (_định danh_) liên quan, chứa một số lượng thông tin
**C** là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX. Từ đó, ngôn ngữ này đã lan rộng ra nhiều
phải|nhỏ|277x277px| Minh họa của một ứng dụng sử dụng libvorbisfile để phát file Ogg Vorbis Trong khoa học máy tính, **thư viện** là tập hợp các tài nguyên không biến động được sử dụng bởi
thumb|right|[[Hunter Biden năm 2014]] Vào tháng 10 năm 2020, một cuộc tranh cãi nổ ra liên quan đến một chiếc máy tính xách tay được cho là thuộc về Hunter Biden. Chủ một cửa hàng
Đây là danh sách nguồn gốc các thuật ngữ liên quan đến máy tính (hay **danh sách từ nguyên thuật ngữ máy tính**). Nó có liên quan đến cả phần cứng và phần mềm máy
**John McCarthy** (4 tháng 9 năm 1927 - 24 tháng 10 năm 2011) là một nhà khoa học máy tính và nhà khoa học nhận thức người Mỹ. McCarthy là một trong những người sáng
nhỏ|300x300px| [[Petr Mitrichev (trái) và Gennady Korotkevich (phải), hai lập trình viên thi đấu nổi tiếng trong một cuộc thi.]] **Lập trình thi đấu** () là một môn thể thao trí tuệ trong đó những
**Python** () là ngôn ngữ lập trình bậc cao đa năng. Triết lý thiết kế của nó nhấn mạnh khả năng đọc mã bằng cách sử dụng thụt lề đáng kể. Python có kiểu động
Biểu trưng chính thức nhỏ|250x250px|Một biển báo điện tử hiển thị ngày 3 tháng 1 năm 1900 vào ngày 3 tháng 1 năm 2000 ở [[Pháp.]] **Sự cố máy tính năm 2000** (còn được gọi
**Máy tính bảng** (Tiếng Anh: Tablet computer hay tablet PC), là một thiết bị di động, thông thường có hệ điều hành di động và mạch xử lý, màn hình cảm ứng và viên pin
Đây là danh sách các ngôn ngữ lập trình đáng chú ý, được nhóm theo loại. Vì không có sơ đồ phân loại bao quát cho các ngôn ngữ lập trình, nên trong nhiều trường
phải|khung|Một minh hoạ cách điệu của máy tính để bàn, bao gồm một vỏ hộp (có chứa bo mạch chủ và bộ vi xử lý), màn hình, bàn phím và chuột **Máy tính để bàn**,
**Giao tiếp lập trình ứng dụng mở** (Open API) (thường được gọi là một giao tiếp lập trình ứng dụng công cộng.) là một giao tiếp lập trình ứng dụng công khai cung cấp cho
Đây là các **trận đấu cờ vua giữa con người và máy tính** quan trọng. Máy tính lần đầu tiên có thể đánh bại những người chơi cờ mạnh vào cuối những năm 1980. nổi
nhỏ|Ảnh chụp màn hình tài liệu [[API web viết bởi NASA]] Một **giao diện lập trình ứng dụng** (, viết tắt: _API_) là một giao diện mà một hệ thống máy tính hay ứng dụng
nhỏ|4 khe cắm [[PCI Express (từ trên xuống dưới: x4, x16, x1 and x16), bên cạnh khe PCI 32 bit (dưới cùng)]] Trong kiến trúc máy tính, **bus** (là tên viết gọn của từ Latin
Trong khoa học máy tính, một **đối tượng** () có thể là một biến, một cấu trúc dữ liệu, một hàm, hay một phương thức, và như vậy, là một vị trí trong bộ nhớ
Trong lập trình hướng đối tượng dựa trên lớp, **hàm tạo** (tiếng Anh: _constructor_, viết tắt: _ctor_) trong một lớp là một kiểu chương trình con đặc biệt được dùng để tạo ra đối tượng.
nhỏ|Bộ tản nhiệt cùng quạt của hãng AMD được gắn bên trên bo mạch chủ của một chiếc máy tính **Tản nhiệt máy tính**, **giải nhiệt trong máy tính** hay **làm mát trong máy tính**
**R** là một ngôn ngữ lập trình và môi trường phần mềm dành cho tính toán và đồ họa thống kê. Đây là một bản hiện thực ngôn ngữ lập trình S với ngữ nghĩa
**Lập trình meta** hay còn gọi là **siêu lập trình** là việc tiến hành một trong hai thao tác (hay cả hai) sau: * Công việc viết một chương trình máy tính mà chương trình
nhỏ **Trò chơi lập trình** (tiếng Anh: _Programming game_) là một trò chơi máy tính mà người chơi không có ảnh hưởng trực tiếp vào tiến trình của game. Thay vào đó, một chương trình
thế=|nhỏ|356x356px|Một trang từ _Bombardier's Information File_ (BIF) mô tả các thành phần và điều khiển của [[thiết bị quan trắc bom Norden. Máy quan trắc bom Norden là một máy tính tương tự quang học
**Scratch** là một ngôn ngữ lập trình mang tính giáo dục miễn phí dựa trên các khối ngôn ngữ lập trình trực quan (VPL) và trang web chủ yếu để giáo dục lập trình, với
nhỏ|Máy tính cơ học khác nhau được sử dụng trong văn phòng từ năm 1851 trở đi. Mỗi người có một giao diện người dùng khác nhau. Hình ảnh này hiển thị theo chiều kim
nhỏ|phải|243x243px|Ảnh chụp giao diện [[phần mềm diệt virus có tên FireLion- FastHelper]] Trong khoa học máy tính viễn thông, **virus máy tính** hay **virus tin học** (thường được người sử dụng gọi tắt là **virus**)
nhỏ|Cbmain Trong khoa học máy tính, một **ngôn ngữ lập trình bậc cao** (tiếng Anh: _high-level programming language_) là một ngôn ngữ lập trình có sự trừu tượng hóa mạnh mẽ khỏi các chi tiết
**PC game** còn gọi là **trò chơi máy tính**, là thể loại trò chơi video được chơi trên các máy tính cá nhân (PC), thay vì chơi trên máy chơi trò chơi điện tử tại