コンテンツにスキップ

オブジェクト指向

出典: フリー百科事典『ウィキペディア(Wikipedia)』

オブジェクト指向(オブジェクトしこう、: object-oriented)は、ソフトウェア開発コンピュータプログラミングのために用いられる考え方である。元々は特定のプログラミングパラダイムを説明するために考案された言葉であり、その当時の革新的技術であったGUI(グラフィカル・ユーザーインターフェース)とも密接に関連していた。明確な用語としては1970年代に誕生し、1981年頃から知名度を得て、1986年頃からソフトウェア開発のムーブメントと化した後に、1990年頃にはソフトウェア開発の総合技術としての共通認識を確立している。ソフトウェア開発における一つの標語のような扱い方もされている。

オブジェクトとは、プログラミング視点ではデータ構造とその専属手続きを一つにまとめたものを指しており、分析/設計視点では情報資源とその処理手順を一つにまとめたものを指している。データプロセスを個別に扱わずに、双方を一体化したオブジェクトを基礎要素にし、メッセージと形容されるオブジェクト間の相互作用を重視して、ソフトウェア全体を構築しようとする考え方がオブジェクト指向である。

オブジェクト指向の来歴[編集]

Alan Kay

オブジェクト指向プログラミングの発案[編集]


object-oriented197280Smalltalk[1]Simula1967object-oriented programming1981BYTESmalltalkSimula1967[2]SimulaSmalltalk1983SimulaC++C++SmalltalkSimulaSimula[3]

[]


1986ACMOOPSLAOOPSLASmalltalkSmalltalkGUIAltoOSAltoGUIOSMacintosh1980CUIGUIGUI

1970standardizationobjectSimulaobject-oriented development1986

[]


OOPSLAOODOOASDSA1980OOPSLA/ER1988OOSA1990Coad&Yourdon1991BoochOMT1992OOSE1993Martin&Odellobject-oriented methodology

19901994GOFBoochOMTOOSEIBMUML1995OOPSLAOOPSLAIBM2003

1989IBMApple11OMGObject Management Group1991CORBA1997OMGUMLOMG2001

[]


 - 1970

 - 1980
 - 1990

 - 1980

 - 1980
 - 2010

 - 1980

 - 1980

 - 1980

 - 1990
Meyer - OOSC

Shlaer and Mellor - OOSA

Wirfs-Brock - RDD

Coad and Yourdon

Booch

OMT

OOSE

Gibson and Goldberg - OBA

  BoochRDDOMTOOSE

Martin and Odell

Graham - SOMA

Henderson-Sellers - MOSES

UML BoochOMTOOSE

OpenOML SOMAMOSES

OEP UMLOMTOOSE

RUP UMLOMTOOSE

 - 

[]

1980[]


1989User Interface A Personal ViewSmalltalkOOPGUIOOUI[4]沿197080GUI

object-oriented means that the object knows what it can do.


SmalltalkGUI

In both case we have the object first and the desire second. this unifies the concrete with the abstract in highly satisfying way.


80GUIGUIGUIGUI

1990[]


1992ACM93The Early History Of SmalltalkSmalltalk[1]B5000SketchpadSimulaFlex machineLISPSmalltalk

Smalltalk's designand existenceis due to the insight that everything we can describe can be represented by the recursive composition of a single kind of behavioral building block that hides its combination of state and process inside itself and can be dealt with only through the exchange of messages.
Smalltalk

LISPrecursive functions of symbolic expressions and their computation by machine.

In computer terms, Smalltalk is a recursion on the notion of computer itself. Instead of dividing "computer stuff" into things each less strong than the wholelike data structures, procedures, and functions which are the usual paraphernalia of programming languageseach Smalltalk object is a recursion on the entire possibilities of the computer.
SmalltalkSmalltalk



Philosophically, Smalltalk's objects have much in common with the monads of Leibniz and the notions of 20th century physics and biology. Its way of making objects is quite Platonic in that some of them act as idealizations of conceptsIdeasfrom which manifestations can be created. 
Smalltalk20

Smalltalk

1, EverythingIsAnObject.
2, Objects communicate by sending and receiving messages (in terms of objects).
3, Objects have their own memory (in terms of objects).
4, Every object is an instance of a class (which must be an object).
5, The class holds the shared behavior for its instances (in the form of objects in a program list).
6, To eval a program list, control is passed to the first object and the remainder is treated as its message.



(一)

(二)

(三)

(四)

(五)

(六)

(2)(3)(4)(5)LISP(6)

2000[]


2003[5]60

I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages.




I wanted to get rid of data. The B5000 almost did this via its almost unbelievable HW architecture. I realized that the cell/whole-computer metaphor would get rid of data, ...
B5000HW/



My math background made me realize that each object could have several algebras associated with it, and there could be families of these, and that these would be very very useful.




OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.
OOP



One of the things I should have mentioned is that there were two main paths that were catalysed by Simula. The early one (just by accident) was the bio/net non-data-procedure route that I took. The other one, which came a little later as an object of study was abstract data types, and this got much more play.
Simula/

non-data-procedure/bio/net

And the very first problems I solved with my early Utah stuff was the "disappearing of data" using only methods and objects. At the end of the 60s (I think) Bob Balzer wrote a pretty nifty paper called "Dataless Programming", and shortly thereafter John Reynolds wrote an equally nifty paper "Gedanken" (in 1970 I think) in which he showed that using the lamda expressions the right way would allow data to be abstracted by procedures.
1960Bob Balzer1970John Reynolds

non-data-procedureFuturespromises

The people who liked objects as non-data were smaller in number,


19701967Simula6719691974IBM/1972

concrete dataSimulaabstract datanon data19801970

2020[]


Q&AQuora196667調rotationThe Early History of Smalltalk1966Simula

In the 1960s, software composites that were more complex than arrays, were often called objects, and all the schemes I had seen involved structures that included attached procedures. A month or so after the rotation someone asked me what I was doing, and I foolishly said object-oriented programming.
60

The foolish part is that object is a very bad word for what I had in mind  it is too inert and feels too much like data. Simula called its instances processes and that is better.Process-oriented programming would have been much better, dont you think?
Simula

[]





(一)^ abThe Early History Of Smalltalk. 20191

(二)^ How Object-Oriented Programming Started

(三)^ OO History: Simula and Smalltalk. 20192

(四)^ User Interface A Personal View. 20201

(五)^ Dr. Alan Kay on the Meaning of Object-Oriented Programming. 20191

関連項目[編集]

外部リンク[編集]