1편을 보고 오시면 더욱 좋아요!
https://chanhee-jeong.tistory.com/29
OOP정복⛳️ (1) 객체지향프로그래밍의 등장 (객체지향 VS 절차지향)
어쩌다가 객지프 공부할일이 생겨서 작성하게 되본 새로운 시리즈 OOP정복 출발 ✨✨✨ (물론 완전한정복🥲은 어려운걸 알고 있음) 🕖 등장배경 아니,, 그래서 왜 객체지향프로그래밍이 나왔는
chanhee-jeong.tistory.com
🐣 요약
Chat GPT!
객체지향프로그래밍을 좀 인상적인 문장으로 요약 좀 해줘
저보다.. .글을 잘쓰는 chat gpt 가 써준 요약입니다.
객체지향프로그래밍에 대한 다양한 정의가 있지만 정말 매우 깔끔하게 정리를 해줬습니다.
지난시간에 짚고 넘어간 "데이터와 데이터를 조작하는 코드를 가진 객체" 를 기반으로 하는 프로그래밍 패러다임
그리고 객체 간 "상호작용"
마지막으로 "구조"와 "유지보수성"
앞으로 설명할 내용을 다 요약해버렸지만🥲 (개발자고 글쓰는사람이고 못하는 세상인가)
그래두 조금 붙여서 설명해보면
실제 세상 (Real world) 을 객체로 보고 특징과 기능을 뽑는 것으로
이 객체들을 유기적으로 조직, 연결하여 프로그래밍 하는 것입니다.
(feat. 객체의 관점)
🐣 클래스 VS 객체 (인스턴스)
계속 객체 객체 거리는데
또 객체 만들때 클래스를 쓴다는데
둘 차이가 뭐야? 라고 한다면
보통은 붕어빵과 붕어빵틀 이야기를 많이 이야기 합니다.
저는 202X 버전으로 들고왔습니다.
눈오리
🐣
클래스란
객체를 생성하기 위한 일종의 설계도 (즉, 눈오리집게) 이다.
같은 종류의 집단에 속하는 속성(필드)과 행위(메소드)를 정의한다.
객체란
소프트웨어 세계에 구현할 대상으로 클래스에 선언된 모양 그대로 생성된 실체이다.
(여기서 눈오리와 밥오리)
객체? 인스턴스?
즉, 객체를 소프트웨어에 실체화 하면 그것을 ‘인스턴스’라고 부른다.
따라서 인스턴스를 객체라고 볼 수 있다.
객체의 공통된 특성을 묶은 즉, 일반화와 추상화를 진행한 것이 클래스가 되는 것이고
반대로 구체화 개별화 되어있는 것은 객체겠죠??
🐣 객체지향프로그래밍의 본질
객체지향프로그래밍의 본질을 아래와 같이 이야기하기도 합니다.
협력하는 객체들의 공동체
단어 하나씩 뜯어본다면 아래와 같습니다.
협력 : 객체간의 상호작용
책임 : 협력에 참여하기 위해 객체가 수행하는 행동
역할 : 공통점을 가진 여러 협력을 하나의 협력으로 추상화 가능
그리고 여기서 가장 중요한 단어 하나가 더 있는데요
바로 메세지입니다.
💌 메세지란!
객체가 다른 객체에게 주어진 책임을 수행하도록 요청을 보내는 것으로,
메시지는 협력을 위해 한 객체가 다른 객체로 접근할 수 있는 유일한 방법입니다.
따라서 각 객체는 자신이 많은 역할, 책임을 다하면서
메세지를 통해 협력을 구축하게 되는 것이죠,
장점과 단점
마지막으로 객체지향프로그래밍의 장점과 단점은 무엇일까요?
👍
유연성 및 변경 용이성 (높은유지보수성)
재사용성
인간친화적이고 직관적
실제 세상의 것들을 본따 만들어
인간친화적이고 직관적입니다.
👎
설계의 복잡성
비교적 느린 실행속도
반면 단점은
인간친화적이고 직관적이기 때문에
컴퓨터가 느끼기에는 안친화적이겠죠?
👋👋👋👋
이번시간은 여기까지
다음편 예고 >> 4가지 주요 컨셉
OOP시리즈는 naive 하게 개념들을 풀어내고 있습니다.
ArticleS.UncleBob.PrinciplesOfOod,2023.02.11,http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
피터의 우아한 프로그래밍,2023.02.12,https://gracefulprograming.tistory.com/130
코드스페이츠, 2023.02.13, https://www.codestates.com/blog/content/객체-지향-프로그래밍-특징
조영호, 오브젝트: 코드로 이해하는 객체지향 설계 (위키북스, 2019)
김종민, 스프링 입문을 위한 자바 객체 지향의 원리와 이해 (위키북스, 2015)
https://gmlwjd9405.github.io/2018/09/17/class-object-instance.html
drom,2023.02.13,https://www.drom.ru/info/misc/tesla-model-y-78909.html
dev-jiwon,2023.02.13,https://dev-jiwon.github.io/swift-grammar-13/
scientecheasy,2023.12.13,https://www.scientecheasy.com/2020/07/encapsulation-in-java.html/
ITCookbook 컴퓨터사이언스, https://slidesplayer.org/slide/15298356/
'CS' 카테고리의 다른 글
OOP정복⛳️ (1) 객체지향프로그래밍의 등장 (객체지향 VS 절차지향) (1) | 2023.02.16 |
---|