2022.5.25. (수)
1. 오늘의 소감
- 오늘은 블로깅 데이! 라고 할 수 있을 만큼 블로깅하는 과제가 많았다. 확실히 새로 배우는 이론적인 부분이 많아서 개념 정리할 게 넘쳤던 하루... 블로깅 시간에는 39기 노션 페이지에서 내가 정리한 글을 올려야했는데, 아직 개념이 숙지가 되지 않은 나는… 3개중 2개밖에 올리지 못했다. 왠지 스스로도 이해안 된 상태에서 공식문서의 설명글을 퍼와서 알고 있는 척 대충 마무리 짓기에는 찝찝했다. 그리고 무엇보다 ‘나만의 언어'로 다시 표현하라는 게 부담스러워서 작성 시간이 계속 길어졌다. 한편으론 확실히 내 언어로 이해한 걸 설명할 수 없으면 그건 제대로 공부한 게 아니구나를 많이 느꼈던 하루였다.
2. 학습한 키워드
- 객체 지향 프로그래밍, 절차적 프로그래밍, 객체 지향 프로그래밍의 주요 특징(장점) 4가지 : 캡슐화, 추상화, 상속, 다형성
3. 키워드를 바탕으로 학습 내용 설명해보기
- 초기 컴퓨터 언어들은 절차적 프로그래밍에 따라 코드를 작성했다. 절차적 프로그래밍은 컴퓨터 처리 구조와 유사하게 로직을 절차적으로 작성한다. 따라서 처리 속도도 빠르고 메모리도 적게 사용한다. 하지만 문제는 소프트웨어가 발전하면서 점점 더 거대하고 복잡한 프로젝트를 처리해야할 때 생겨났다. 기존의 절차적 프로그래밍 방식은 사람이 이해하기에는 어려워 가독성이 떨어지고, 유지보수도 힘들었다. 이 단점들을 보완하기위해 나타난 것이 객체 지향 프로그래밍이다.
- 객체 지향 프로그래밍(OOP)는 코드를 상태와 기능을 가진 ‘객체' 단위로 묶고, 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 사람의 사고 방식과 유사하기 때문에 코드의 가독성이 좋다. 따라서 코드 이해가 편해 유지보수가 쉽다. 또한 코드를 객체 단위로 묶었기 때문에 코드의 재사용성도 높은 편이여서 크고 복잡한 프로젝트에 적합하다. 다만, 절차적 프로그래밍에 비해 처리속도가 느리고, 메모리 사용량도 많은 편이다.
- 절차적 프로그래밍과 객체 지향 프로그래밍 중 어느 게 더 좋다고 말할 수는 없다. 둘 다 가진 장단점이 다르기 때문이다. 메모리관리와 빠른 처리속도가 중요하다면 절차적 프로그래밍을 활용하는 게 좋다. 반면에 사람들과의 협업이 중요한 복잡하고 거대한 프로젝트를 진행해야한다면 객체 지향 프로그래밍이 더 좋다.
- 자바스크립틑 정확하게는 객체 지향 언어가 아니나, 객체 지향 패턴으로 작성할 수 있다.
- 객체는 속성과 메소드의 묶음이면, 클래스를 통해 생성할 수 있다.
- 객체 지향 프로그래밍은 주요 특징(장점) 4가지를 가진다.
- 캡슐화, 추상화, 상속, 다형성
- 캡슐화
- 캡슐화는 데이터와 기능을 하나의 단위로 묶는 것을 뜻한다.
- 캡슐화를 통해 은닉화 또한 구현할 수 있다.
- 은닉화는 구현은 숨기고 기능만 노출시키는 것으로, 노출된 부분만 사용하게 해서 코드의 안정성을 유지시킬 수 있다.
- 추상화
- 추상화는 내부 구현은 아주 복잡한 데, 노출되는 부분은 단순하게 만든 것이다.
- 추상화를 통해 인터페이스를 단순화할 수 있다.
- 너무 많은 기능을 노출시키는 것은 코드 안정성을 해친다.
- 상속
- 상속은 부모 클래스의 특징을 자식 클래스에게 물려주는 것이다.
- 다형성
- 다형성은 같은 메소드라도, 내용물은 다르게 구현할 수 있다는 뜻이다.
- 부모 클래스의 메소드를 상속받아 왔다면, 자식 클래스에서는 그 메소드를 그대로 사용할 수도 있지만, 자신에 맞게 고쳐서(오버라이딩해서) 쓸 수도 있다.
- 만약 다형성을 제공하지 않는다면, 부모 클래스의 메소드는 자식의 상태별로 코드를 if 문으로 분기한, 번거로운 로직을 짜야했을 것이다.
728x90
반응형
'TIL' 카테고리의 다른 글
[TIL] #20. 고차함수 직접 구현해보기 (0) | 2022.12.06 |
---|---|
[TIL] #19. 프로토타입 (0) | 2022.12.06 |
[TIL] #17. 고차함수 (0) | 2022.12.06 |
[TIL] #16. 기술 면접 연습하기 (0) | 2022.12.06 |
[TIL] #15. 나만의 아고라 스테이츠 만들기 (0) | 2022.12.06 |