일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 개발
- 의도
- 이름
- 문법
- 협업
- iOS프로그래밍
- Solid
- 의존성
- 클린소프트웨어
- POP
- CleanCode
- 클린코드
- 아이폰프로그래밍
- 개발자
- 인터페이스
- fp
- interface
- 디자인패턴
- protocol
- 함수형프로그래밍
- OOP
- 함수형패러다임
- 객체지향프로그래밍
- SWIFT
- Swfit
- 네이밍
- DesignPattern
- 부스트코스
- 고차함수
- IOS
- Today
- Total
밤에 쓴 코드
OOP ) 클래스 / 인스턴스 / 객체 본문
OOP - 객체지향 프로그래밍
중요하다. 근데 왜쓰는가 ? 왜 중요한가?
, 반론이나 의문을 가져본 적이 있는지 싶다.
OOP
- 객체를 이용하여 프로그래밍을 한다 .
WHY?
우리는 많은 현실의 문제를 해결하길 원한다.
소프트웨어는 현실의 문제를 해결하기 위한 좋은 환경이다.
이제 우리는 현실의 문제를 소프트웨어 세상에 표현하고자 한다.
세상엔 많은 실체들이 존재한다.
이 것들을 모두 프로그래밍으로 녹여 내고 싶다.
어떻게 표현하는 것이 좋을까 ?
예시를 들어보자.
수 많은 사람들이 존재한다.
짱구 , 철수 , 영희 ...
이들은 공통적인 속성이 있다.
모두
몸무게 , 키 ,나이 , 이름 를 가지며
각각은 다를 수 있다.
또 공통된 동작을 한다.
걷고 , 말한다.
이 공통된 속성 과 동작은 각기 다른 결과를 낼수도 있고 , 다른 방식을 사용 할수 도 있지만 ,
행위의 목적(?)과 행위를 한다는 것은 공통된다.
이 것들은 추상화를 할수 있다.
사람들은 추가적인 속성/동작 을 가질 수는 있으나 필수 적으로 가져야하는 동작/속성이 있다.
이것들은 추상화를 통해 클래스
로 표현할 수 있다.
클래스
class 사람{
int 키;
String 이름;
String 혈액형;
int 몸무게;
int 나이;
String 국적;
public void 걷는다( ){
};
public void 말한다(){
}
}
객체
실제하는 물체 / 우리가 소프트웨어에 표현하고 싶은 주체이다.
예로는 짱구 영희 같은 여러 사람들을 표현하는데에 있어서 /
각각은 같은 속성을 가지고있지만 같은 값을 가지고있진 않다.
각각의 이름은 다를수 있고 , 각각 객체의 나이는 다를수 있다.
그러나 이들은 실체한다.
객체는 이 실체
한다에 더욱이 집중한다.
인스턴스
사람 짱구 = new 사람();
사람 영희 = new 사람();
짱구.이름 = "짱구"
영희.이름 = "영희"
System.out.print(짱구 instanceOf 사람) //true
System.out.print(영희 instanceOf 사람) //true
이와 같이 고양이와 강아지는 추상화된 클래스를 구체화 하여 , 실체화되어 동물이 되었다.
instanceOf
에서 알수 있듯이 instance 는 어떤 클래스를 구체화하여 인스턴스가 되었다는 관계적 측면을 더욱이 표현하고 있다.
'OOP' 카테고리의 다른 글
OOP ) SOLID - 객체지향 5원칙 (0) | 2019.05.18 |
---|---|
OOP ) 타입, 추상화 (0) | 2019.04.28 |
OOP ) 상태 , 행동 , 식별자 (0) | 2019.04.26 |
OOP) 역할 , 책임 , 협력 (0) | 2019.04.22 |
OOP ) Class,객체간의 소통 (0) | 2019.04.07 |