절차지향
-
물의 흐름과 같이 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍
-
대표적인 언어
-
컴퓨터의 동작 원리와 유사하기 때문에 객체지향 보다 속도적으로 유리하다
-
하드웨어가 발달함에 따라 소프트웨어의 속도 차이가 큰 문제가 되지 않아서 객체지향 언어가 탄생하였다.
-
단점
- 각 코드가 매유 유기성이 높아 유지보수가 어렵다.
- 실행 순서가 정해져 있기 때문에 코드의 순서를 바꾸면 동일한 동작을 기대하기 어렵다.
객체지향 프로그래밍
객체지향
재사용성과 생산성
- 재사용성
- 기존 시스템에 추가적인 기능을 덧붙이거나 수정하여, 기존 시스템을 그대로 사용할 수 있는 능력
- 소프트웨어에서의 재사용성은
한 번 작성한 코드를 별도의 수정 없이 다른 곳에서 사용하는 것
- 객체지향 분야에서는
클래스의 상속
을 통해 이루어진다.
용어
클래스
객체를 생성하기 위한 설계도
, 흔히 붕어빵 틀
= 클래스
, 붕어빵
= 객체
라고 비유한다.
객체
클래스
라는 설계도에 의해 생성된 것
객체 지향 관점에서는 선언
인스턴스
객체의 생성자를 통해 실체화 한 것, 객체 지향 관점에서 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부른다.
붕어빵 예시에서는 붕어빵 틀(클래스)
를 통해 붕어빵(객체)
가 만들어지는데, 각각 붕어빵(객체)
은 개별적인 특성(굽기 정도, 밀가루 양, 앙금 양)이 있기 때문에, 바싹 익은 붕어빵(인스턴스)
, 앙금이 많은 붕어빵(인스턴스)
등이 있다. 이들은 모두 붕어빵(객체)
이다.
프로그래밍 구조
- 프로퍼티와 메소드
- 프로퍼티
- 객체의 상태나 속성
- 객체가 가지고 있는 데이터나 값
- 메소드
- 추상화
- 복잡한 시스템으로부터 핵심적인 개념 또는 기능을 간추려내는 것
- 캡슐화
- 객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것
- 상속
- 상위 클래스의 특성을 하위 클래스가 이어받아서 재사용하거나 추가, 확장하는 것
- 코드의 재사용 측면, 계층적인 관계 생성, 유지 보수성 측면에서 중요
- 다형성
- 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것을 말한다.
- 오버로딩과 오버라이딩
간접 참조 (Indirection)
- 다른 객체나 모듈에 간접적으로 접근하여 참조하는 방법
- 객체간 결합도를 낮추며 유지보수에 용이
- 추가적인 로직이 필요하며 처리 속도가 상대적으로 느릴 수 있음
- 간접 참조를 너무 많이 사용하면 코드의 가독성이 떨어짐
상속에서의 override, super 키워드
- override
- super
- 자신의 super 클래스를 가리키는 것, 즉 부모 클래스를 가리킴
- 서브클래스에서 슈퍼클래스의 프로퍼티나 메소드를 사용하고 싶을 때 사용한다.
Reference
instance란?
Enum 랜덤하게 쓰기