DOI QR코드

DOI QR Code

Taxonomy of Abstraction

추상화의 분류

  • Published : 2004.02.01

Abstract

Abstraction is an important concept applied widely to variables, functions, complex data, abstract data types, classes and polymorphism in programming languages. However, the concept of abstraction has been considered as ambiguous and explained differently because it is not defined clearly and uniformly. In this paper, we analyse many aspects of abstraction in programming languages, and propose the taxonomy of abstraction. We classify abstraction according to the mechanism of formation into 4 categories such as napping abstraction, bundling abstraction. integrating abstraction and extending abstraction. We also consider many concepts related closely to abstraction such as functions, abstract data types, objects, encapsulation and classes in the view of abstraction. These analysis and consideration will make it possible to explain uniformly various aspects of abstraction which have been treated individually and differently, and to understand the meanings, necessity and importance of abstraction more intensively.

프로그래밍 언어에서의 추상화는 변수, 함수, 복합 데이터 등에서부터 추상 데이터 타입, 클래스, 다형성 등에 이르기까지 광범위하게 적용되는 중요한 개념이다. 그러나 추상화 개념의 명확성과 통일성 부족으로 인하여 추상화는 다소 애매 모호한 특성을 갖는 용어로 인식되어지고 있으며, 관점에 따라 다르게 설명되는 혼란스러움을 경험하고 있다. 본 논문에서는 여러 프로그래밍 언어에 나타난 추상화에 대한 체계적인 분석을 실시하여 추상화의 분류를 제안한다. 추상화는 추상물의 생성 방법에 따라 사상 추상화, 묶음 추상화, 통합 추상화, 확장 추상화 등 4가지 범주로 분류된다. 또한 함수, 추상 데이터 타입, 객체, 캡슐화, 클래스 등 추상화를 기반으로 하여 형성된 여러 개념들이 추상화의 관점에서 고찰된다. 이러한 체계적인 추상화의 분석과 분류를 통하여 지금까지 개별적이며 서로 다른 형태의 추상화로 취급된 여러 추상화 양상이 하나의 통일된 개념으로 설명될 수 있을 것이며, 추상화의 의미, 필요성, 중요성에 대하여 보다 깊은 이해가 가능할 것이다.

Keywords

References

  1. M. Abadi, L. Cardelli and P. L. Curien, 'Formal Parametric Polymorphism,' Proceedings of the 20th ACM Symposium on Principles of Programming Languages, 1993 https://doi.org/10.1145/158511.158622
  2. K. Arnold and J. Gosling, The Java Programming language, Addison-Wesley, 1996
  3. The Bible Societies, The Holy Bible Authorized Version, The Bible Societies, 1972
  4. A. Bogida, J. Mylopoulos and H. Wong, 'Generalization/Specialization as a Basis for Software Specification,' On Conceptual Modelling: Perspectives from Artificial Intelligence, Databases, and Programming Languages, M. L. Brodie, J. Mylopoulos and J. W. Schmidt, Eds., Springer-Verlag, 1984
  5. P. Canning, W. Cook, W. Hill, W. Olthoff and J.C. Mitchell, 'F'-bounded Polymorphism for Object-Oriented Programming,' Proceedings of the 4th Functional Programming Languages and Computer Architecture, 1989 https://doi.org/10.1145/99370.99392
  6. L. Cardelli and P. Wegner, 'On Understanding Types, Data Abstraction, and Polymorphism,' ACM Computing Survey, Vol.17, No.4, Dec., 1985 https://doi.org/10.1145/6041.6042
  7. O. J Dahl and K. Nygaard, 'Simula - An Algol-based Simulation Language,' Comm. ACM, Vol.9. No.9, Sep., 1966 https://doi.org/10.1145/365813.365819
  8. S. Danforth and C. Tomlinson, 'Type Theories and Object-Oriented Programming,' ACM Computing Surveys, Vol.20, No.1, Mar., 1988 https://doi.org/10.1145/62058.62060
  9. http://www.encyber.com/
  10. T. Korson and J. D. McGregor, 'Understanding Object-Oriented: a Unifying Paradigm,' Comm. of ACM, Vol.33, No.9, Sep., 1990 https://doi.org/10.1145/83880.84459
  11. B. W. Kenighan, D. M. Ritchie, The C Programming Language, Prentice-Hall, 1988
  12. Q. Ma, 'Parametricity as Subtyping,' Proceedings of the 19th ACM Symposium on Principles of Programming Languages, 1992 https://doi.org/10.1145/143165.143225
  13. M. N. Mattos, 'Abstraction Concepts: the Basis for Knowledge Modeling,' Proc. of Conf. on Entity-Relationship Approach, 1988
  14. B. Mayer, Eiffel : The Language, Prentice-Hall, 1992
  15. O. Nierstrasz, 'A Survey of Object-Oriented Concepts,' in Object-Oriented Concepts, Databases, and Application, ACM Press, 1989 https://doi.org/10.1145/63320.66468
  16. R. W. Sebesta, Concepts of Programming Languages, The Benjamin/Cummings Publishing Company, 1992
  17. R. Sethi, 'Programming Languages,' Concepts and Constructs, Addison-Wesley, 1989
  18. A. Snyder, 'Encapsulation and Inheritance in Object-Oriented Programming language,' Proceedings of the First ACM Conference on Object-oriented programming Systems, Languages and Applications, 1986 https://doi.org/10.1145/28697.28702
  19. J. M. Smith and D. C. P. Smith, 'Database Abstraction : Aggregation and Generalization,' ACM TODS, Vol.2, No.2, June, 1977
  20. B. Stroustrup, The C++ programming Language, Addison Wesley, 1993
  21. A. Taivalaari, 'On the Notion of Inheritance,' ACM Computing Surveys, Vol.28, No.3, Sep., 1996 https://doi.org/10.1145/243439.243441
  22. J. D. Ullman and J. Widom, A First Course in Database Systems, prentice-Hall, 1997
  23. P. Wegner, 'Classification in Object-oriented Systems,' ACM SIGPLAN Notices, Vol.21, No.10, Oct., 1986 https://doi.org/10.1145/323648.323757
  24. 김성기, '절차적 추상화의 분류와 다형성', 한국정보처리학회논문지A, Vol.10A, No.1, Mar., 2003 https://doi.org/10.3745/KIPSTA.2003.10A.1.075
  25. 김성기, '프로그래밍 언어에서의 추상화', 한신대학교 정보과학연구소논문지, Vol.6, No.1, Dec., 2002