Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- Serialization
- Stack
- 이스케이프 문자
- 이것이 자바다
- list 컬렉션
- stream
- 메모리구조
- insertion sort
- Graph
- 윤성우 열혈자료구조
- coding test
- datastructure
- 윤성우의 열혈 자료구조
- R
- C 언어 코딩 도장
- 혼자 공부하는 C언어
- JSON
- Selection Sorting
- buffer
- C programming
- s
- Algorithm
- 알기쉬운 알고리즘
Archives
- Today
- Total
Engineering Note
[Java] Object Oriented Programming 본문
Programming Language/Java
[Java] Object Oriented Programming
Software Engineer Kim 2022. 9. 9. 00:13Object Oriented Programming
- Object Oriented Programming
- Object
- Class
- Instance
- IoC
- Object Oriented Programming
- In the real world, you often have many objects of the same kind. For example, your bicycle is just one of many bicycles in the world. Using object-oriented terminology, we say that your bicycle object is an instance of the class of objects known as bicycles.
- 현실세계(원자세계)를 bit 세계로 옮길 때, 즉 SW화하여 프로그래밍할 할 때, Object(객체) 지향적으로 프로그래밍을 한다는 뜻.
- Programming 이란 현실 세계에서 반복되는 일들을 명령어와 데이터로 표현하고 이것들을 나열해 자동화하는 일이다. 그런데 초창기에는 이러한 프로그래밍을 절차적인 관점으로 설계했다. 예를 들면 자동차를 만드는 과정을 프로그래밍화 할때 컨베이어 벨트를 지나야 완성되는 자동차처럼 설계했다. 엔진설계, 차체설계, 핸들설계, 의자설계, 바퀴설계 순으로 차례대로 만들어야 한다. 하지만 객체지향은 엔진 객체, 차체 객체, 핸들 객체, 의자 객체, 바퀴 객체로 클래스화하여 분류하여 만들고 이를 조립하는 방식이다.

- Object
- 이 세상에 존재하는 모든 것, 객체
- 자동차, 심지어 사람도 모두 객체이다. 사람에게 객체 Object라고 하면 기분 나쁘게 들릴 수도 있느나, 창조자(개발자)의 입장에서는 객체
- Object의 구성요소 - field, method
- 이 세상에 존재하는 객체들을 잘 살펴보면 모두 속성과 행위를 가지고 있다. 예를 들면 사람은 ‘이름’이라는 속성을 갖고 있고, ‘걷는다’라는 행위를 한다. 이렇게 필드와 메소드는 객체가 가지는 속성과 행위를 나타내는 것. 자동차도 객체지향적으로 살펴보면 ‘색상’이라는 속성과, ‘달린다’ 라는 행위를 가지고 있다.
- Class
- 현실 세계의 존재하는 Object를 분류하여 속성과 행위로 정의한 것, SW 입장에서는 객체의 설계도
- 클래스를 단순히 객체의 설계도라고 설명하기도 하지만 객체를 일반화하여 분류한 것으로 이해할 수도 있다.
- Instance
- 실체, 예시, Class로부터 생성된 Object,
- Object가 SW세계에서 실체화될 때 Instance라고 부른다. 위에서 객체지향적으로 프로그래밍하기 위해서 현실 세계의 존재하는 Object를 Class화 했다. 즉, Object들을 분류했다. 이렇게 분류된 Object들을 Java에서는 new라는 명령어를 통해 프로그래밍 세계에서 실제 만들어 낸 예시가 바로 Instance이다.
- 영어에서 일반적인 이야기를 하고 뒤에 구체적인 예시를 들때 쓰는 표현 - for example, for instance에서 쓰이는 그 instance와 같은 뜻.
- IoC
- 제어의 역전, new를 통해 객체의 생성을 개발자가 아니라 스프링이 대신하는것 객체에 대한 제어권이 스프링으로 넘어 갔다고 해서 제어의 역전 Inversion of Control이라고 표현함
객체지향 Code 실습
package oop.exam;
public class Car {
String brand;
String color;
public Car(String brand, String color){
this.brand = brand;
this.color = color;
}
public void move(){
System.out.println("Car moves!");
}
}
현대차, 기아차 BMW 등 현실 세계에 존재하는 Object Car를 Class화 하여 Car Class를 만들었다. Car는 기본적으로 브랜드와 색상이라는 속성이 존재하고, 움직인다는 행위가 존재하기 때문에 brand와 color라는 field를 만들고, move라는 method를 만들었다.자동차 엔지니어가 위에서 분류한 Car Class를 가지고 Car를 인스턴스를 생성하고, Car의 brand와 color 값을 설정하고 move 메소드를 테스트 하는 모습을 구현했다.
package oop.exam;
public class CarEngineer{
public static void main(String[] args) {
Car car = new Car("Hyundai", "Black");
System.out.println(car.brand);
System.out.println(car.color);
car.move(); // Car moves!
}
}
자동차 엔지니어가 위에서 분류한 Car Class를 가지고 Car를 인스턴스를 생성하고, Car의 brand와 color 값을 설정하고 move 메소드를 테스트 하는 모습을 구현 했다.
참고자료
- MIT Java Concept 문서
- 스프링 입문을 위한 자바 객체 지향의 원리와 이해 (김종민 지음)
- 코드메이트 자바(https://codemate.kr/project/JAVA-메이트-기초편/12-1.-객체지향-1)
'Programming Language > Java' 카테고리의 다른 글
| [Java] Inheritance (0) | 2022.09.09 |
|---|---|
| [Java] Access Modifier, Encapsulation (0) | 2022.09.09 |
| [Java] Dependency (0) | 2022.09.02 |
| Window에 Java 파일 여러개 설치 feat batch (0) | 2022.08.03 |
| [Java] this 키워드 (0) | 2022.08.02 |
Comments
