DOI QR코드

DOI QR Code

절차적 추상화의 분류와 다형성

Taxonomy of Procedural Abstraction and Polymorphism

  • 발행 : 2003.03.01

초록

소프트웨어의 개발, 유지보수 및 확장을 용이하기 하기 위하여 프로그래밍 언어에 여러 추상화 기법이 도입되었다. 그러나 추상화와 연관된 여러 개념과 용어가 통일성이 있게 정의되지 못하므로 인하여 관점에 따라 다르게 설명되기도 한다. 특히 추상화를 가장 강력한 기반으로 하여 태동된 객체 지향 패러다임에서 이러한 혼란은 아직도 계속되고 있는 실정이다. 본 논문에서는 프로그래밍 언어에서 가장 중요한 추상화의 하나인 절차적 추상화를 분석하고 이에 대한 유형을 살펴본다. 이를 통하여 절차적 추상화가 지금까지 일반적으로 인식되어온 '처리과정을 기능으로 바꾸는 추상화'라는 기본적인 추상화의 개념 외에도 '추상화에 대한 추상화'의 개념이 내포된 고수준의 추상화도 포함되어 있음을 밝힌다. 또한 절차적 추상화와 관련된 다형성을 추상화의 관점에서 설명한다. 이러한 분석과 고찰을 통하여 절차적 추상화에 대한 수준 높은 이해가 이루어질 수 있을 것이다.

Many abstraction techniques are introduced in programming languages in order to facilitate the development, maintenance and extension of softwares. But several concepts and terms related to abstraction have not been uniformly defined and have been explained differently. Expecially in object-oriented paradigm strongly based on abstraction common consensus was not derived. In this paper, we analyse procedural abstraction, propose the taxonomy of procedural abstraction and show that procedural abstraction contains the concept of abstraction on abstraction in addition to the transformation of procedures into abstraction. We also explain polymorphism in the view of abstraction. These analysis and consideration will make it possible to understand procedural abstraction more intensively.

키워드

참고문헌

  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
  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 Welsley, 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