내일배움캠프 7기

자바(객체지향)

suuuki 2024. 10. 18. 20:45

나무반


객체지향(object-oriented programming)

 

 

 

객체 지향을 잘한다=상대에게 내 의견을 아주 논리적으로 설득잘한다

 

 

객체 지향을 잘 하기 위한 가이드

객체지향은 인간의 사고 관점에 어떤 것을 분류하려고 하는 모델

지극히 인간 관점

 

객체 지향을 표현 해야 한다-> 컴퓨터를 써서 표현해야 한다->컴퓨터는 사람언어를 모른다 -> 컴퓨터가 아는 언어(java 등)를 써야 한다->java 쓰려면 문법 배워야 한다

 

내가 어려운게 자바 문법인지 객체 지향인지 체크해보기

 

객체(Object)란?

 

실생활의 객체

ex)눈앞에 있는 모니터, 키보드, 노트북, 마우스,휴대폰

 

사전적 의미에서는 실체나 물리적인 물체, 물건을 의미하고 있지만

객체지향 프로그래밍(oop)에서는 무형의 논리적인 개념들로 객체를 인지할 수있다

ex)계약, 회원권, 예약, 주식, 펀드 등등, 은행, 신용카드 결제

 

객체 지향은 무엇인가?

 

객체지향 <-> 절차지향(순서대로)

c언어: 절차지향만 가능- 모든일을 다같이

c++: 이 언어부터 객체 지향 가능해졌다

 

직원= 클래스

객체지향은 객페에제 적절한 업무를 배정해주는 사장의 역활

-> 잘 분배해야 혼선 안 생김

 

코드에서 혼선= 장애

 

객체 지향. 프로그래밍(Object Oriented Programming)

 

클래스(Class)

일반적으로 특정한 데이터 구조와 그 데이터에 대해 수행 할 수 있는 동장(메서드)을 정의하는 일종의 설계도

해야하는 작업 또는 업무에 대한 정의

어떤 역활의 정의 or 해야하는 일 or 기능 정도

 

 

객체(Object)

인스턴스라고도 불린다(정확히 따지면 차이가 있지만, 같은 개념이라고 보면 된다)

 

backendDeveloper. ->채용공고한테 이거해봐

backDev. -> 사람에게 직접해봐

 

교통수단은 구체적이지x-> 이건 클래스

자건저, 버스,기차-> 객체

==>여기선 교통수단이 좀 더상위개념이므로

하지만, 객체 상위클래스는 상대적이므로 아래의 경우에는 

자동차= 클래스/기아,현대= 객체

 

 

객체 4대장

1. 상속(Inheritance)

동등한 개념끼리는 상속을 맺을 수는 있지만 이런 형태로는 구현하지 않는다

ex)주식계좌, 일반계좌, 적금계좌

하지만 주식계좌, 일반계좌, 적금계좌는 '계좌'라는 하나의 속성으로 묶일 수 있음

 

 

부모객체는 자식 객체를 호출 할 수 없다

하지만 자식 색체는 부모객체를 호출 할 수 있다

 

2. 캡슐화

클래스 내부를 회부에 공개하지 않는다는 개념

개발자는 내부에 접근 할 수 있는 방법을 제공해야 함

내가 만든 클래스를 외부에서 사용할때, 숨기고 픈건 캡슐화 해서 제한적으로 쓰게 함

ex)생성자, setter,getter

 

3. 다형성(Polymorphism)

말그대로 형대가 다양

ex)이제 쇼핑몰에서 결제 할때 여러수단->카드, 계좌이체, 현금, 휴대폰 등

다른 결제 방식이 있다면 그걸 추가 할 수 있고, '결제'라는 행위에서 다양한 방식을 쓸 수 있는게 다형성

 

 

4. 추상화(Abstraction)

앞선 결제 예제에서 추상화를 뽑자면 "결제"하는 개념

앞선 예제들에서 추상화도 꼽자면 '결제'

결제에는 신용카드, 휴대폰, 페이 등이 있다는 다형성된걸 보고 '결제에는 이런 다양한 방식이 있겠네' 하고 구체화 하는것

다형성이랑 추상화 다른점

 

오늘 배운 키워드

객체 지향 프로그래밍

클래스= 백엔드개발자(역활을 하는 사람, 누군가로 물리적으로 지정되지x) 어떤 역활의 정의 or 해야하는 일 or 기능 정도

객체(인스턴스, Object)= 체용된 그사람 자체(교체 가능)

상속= 부모->자식

캡슐화= 내부의 숨기고 픈걸 숨기는 것 ex)생성자, setter,getter

회사에 컴플레인이 왔을때 내부 구조나 조직은 모르지만, 어떤 방식으로든 고객의 문제점을 접수해주는 통로를 만들어 주는게 캡슐화

다형성= 현금, 카드, 계좌이체 등 다양한 방식의 공통점인 '결제'를 모은게 다형성

추상화= 결제에서 다시 구체화 한게 추상화

 

추가 학습 키워드

SOLID

디자인 패턴

-특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책

-소스나 기계 코드로 바로 전환될수 있는 완성된 디자인은 아님

-어플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는데에 쓰이는 형식화 된 가장 좋은 관행