3. Inheritance Patterns - OOP

xlsoh·2020년 9월 9일
0

TIL

목록 보기
9/23
post-thumbnail

프로그램 언어

저급 언어 (Low-Level Language)

: 실행 속도 빠름 (Speed of execution), Code density, Machine specific

  • 기계어 (Machine Languages)
    컴퓨터가 직접 이해할 수 있는 언어. 0과 1의 2진수 형태로 표현됩니다. 기종마다 기계어가 다르므로 언어의 호환성이 없습니다. 프로그램 유지보수가 어렵습니다. 전문적인 지식이 없으면 프로그램 작성 및 이해가 어려워, 사람이 기계어로 프로그래밍 하는 것은 좋은 선택이 아닙니다.

  • 어셈블리어 (Assembly Languages)
    기계어와 1:1로 대응되는 기호로 이루어진 언어. 기계어의 숫자를 의미있는 단어로 바꾸어 이해하기 쉽게 만든 언어입니다. '어셈블리어'를 '기계어'로 번역하는 프로그램을 어셈블러 (Assembler)라고 합니다.

고급 언어 (High-Level Language)

: 호환성, 용이성 좋음 (Ease of Implementation, Flexibility, Portability)

  • 어셈블리어는 기계어와 문법구조가 거의 유사하여 '저급 언어'라고 할 수 있고, C,C++,JAVA, Python,c# 같은 언어들을 '고급 언어'라고 할 수 있습니다.
    '고급 언어'를 '기계어'로 번역하는 프로그램을 컴파일러 (Compiler)라고 합니다.
    • 절차적 언어 (Procedural languages)
    • 객체 지향 언어 (Object-oriented languages)

OOP

객체 지향 프로그래밍 (Object-Oriented Programming, OOP)

은 컴퓨터 프로그래밍의 패러다임 중 하나입니다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것 입니다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있습니다.

'객체 지향 프로그래밍 언어'는 '절차적 언어'보다 유지보수성(Maintainalbility) 과 재사용성(Reusability)이 좋습니다.

기본 구성 요소

구성 요소설명
객체 (Object)클래스의 인스턴스(실제로 메모리상에 할당된 것)
객체(Object)- 속성(Attribute) : 객체가 가지고 있는 정보 - 메소드(Method) : 객체가 메시지를 받아 실행해야 할 구체적인 연산을 정의
클래스 (Class)코드 작성의 기본단위로, 같은 종류의 집단에 속하는 속성(attribute)과 행위(behavior)를 정의한 것
메서드 (Method), 메시지 (Message)클래스로부터 생성된 객체를 사용하는 방법

특징

  • 캡슐화 (Encapsulation)
    속성과 메소드를 클래스 하나로 묶어, 외부로부터 은닉시키고 메소드를 통한 접근을 가능하게 합니다.

  • 상속 (Inheritance)
    새로운 하위 클래스가 기존의 상위 클래스의 자료와 연산을 이용할 수 있게 하는 기능입니다.

  • 추상화 (Abstraction)
    불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만드는 것입니다.

  • 다형성 (Polymorphism)
    어떤 한 요소에 여러 개념을 넣어 놓는 것 (many + form)으로 일반적으로 오버라이딩(같은 이름의 메소드가 여러 클래스에서 다른 기능을 하는 것)이나 오버로딩(같은 이름의 메소드가 인자의 개수나 자료형에 따라서 다른 기능을 하는 것)을 의미합니다. 다형 개념을 통해서 프로그램 안의 객체 간의 관계를 조직적으로 나타낼 수 있습니다.

profile
주니어 프론트엔드 개발자

0개의 댓글