Кіріспе

Бағдарламалауда үлкен немесе өте қуатты нысан.

Нысанға бағдарланған бағдарламалауда, "құдай нысан" (кейде "барлығын білетін" немесе "әлемді білетін" нысан деп те аталады) – көптеген әртүрлі типтерге сілтеме жасайтын, тым көп байланыссыз немесе жіктемеленбеген әдістері бар, немесе екеуінің де комбинациясынан тұратын нысан. "Құдай нысан" – антиүлгінің және кодтың нашар иісінің мысалы.

Сипаттамалары

Бағдарламалаудың кең таралған тәсілі – үлкен мәселені бірнеше кіші мәселелерге бөлу (бөліп жеңу стратегиясы) және олардың әрқайсысы үшін шешімдер жасау. Кіші мәселелер шешілгеннен кейін, үлкен мәселе толығымен шешілген болып есептеледі. Сондықтан, кіші мәселе үшін берілген объектінің тек өзі туралы білуі жеткілікті. Сол сияқты, объектінің шешуі керек бір ғана мәселе бар: оның өзіне қатысты мәселелер. Бұл да жалғыз жауапкершілік принципіне сәйкес келеді. Ал "құдай объектісін" пайдаланатын бағдарлама осы тәсілді қолданбайды. Мұндай бағдарламаның көп бөлігі бір "барлығын білетін" объектіге енгізіледі, ол бағдарлама туралы көптеген ақпараттарды сақтайды және осы деректерді өңдеу үшін көптеген әдістерді ұсынады. Бұл объекті көп деректерді қамтиды және көптеген әдістерді қажет ететіндіктен, бағдарламадағы оның рөлі құдай сияқты болады (барлығын білетін және барлығын қамтитын). Бағдарлама объектілері бір-бірімен тікелей байланыс орнатудың орнына, бағдарламадағы басқа объектілер ақпарат алу және өзара әрекеттесу үшін көбінесе бір "құдай объектісіне" сүйенеді. Бұл объекті басқа кодтың көп бөлігімен тығыз байланысқандықтан, оны күтіп ұстау біркелкі бөлінген бағдарламалау жобасына қарағанда қиынырақ. Объектіге бір функцияның пайдасы үшін енгізілген өзгерістер басқа, тікелей қатысы жоқ функцияларға да әсер етуі мүмкін. "Құдай объектісі" – процедуралық бағдарламалау тілдерінде кіші бағдарламаларды (подпрограммаларды) пайдаланбаудың немесе жай-күй туралы ақпаратты сақтау үшін тым көп жаһандық айнымалыларды қолданудың объектіге бағытталған аналогы. "Құдай объектісін" жасау әдетте жаман бағдарламалау практикасы саналады, бірақ бұл тәсіл кейде тығыз бағдарламалау орталарында (мысалы, микроконтроллерлерде) қолданылады, онда өнімділікті арттыру және басқаруды орталықтандыру техникалық қызмет көрсету мен бағдарламалау көркемдігінен гөрі маңыздырақ.