오늘이라도
혼자 공부하는 자바, Ch 06-1 객체 지향 프로그래밍 본문
https://github.com/upcake/Class_Examples
교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다.
0. 객체의 정의
- 객체란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있으면서 식별 가능한 것을 말한다.
- 객체는 속성과 동작으로 구성되어 있고 자바에서는 이 속성과 동작을 각각 필드와 메서드라고 부른다.
- 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 객체 모델링이라고 한다.
- 객체 모델링은 현실 세계 객체의 속성과 동작을 추려내어 소프트웨어 객체의 필드와 메서드로 정의하는 과정이라고 볼 수 있다.
1. 객체의 상호작용
- 객체들은 각각 독립적으로 존재하고, 다른 객체와 서로 상호작용 하면서 동작한다.
- 객체들 사이의 상호작용 수단은 메서드이고, 이때 객체가 다른 객체의 기능을 이용하는 것이 메서드 호출이다.
- 리턴 값 = 전자계산기객체.메서드(매개값1, 매개값2, ...);
- ① 객체에 도트(.) 연산자를 붙이고 메서드 이름을 기술한다. 도트 연산자는 객체의 필드와 메서드에 접근할 때 사용한다.
- ② 매개 값은 메서드를 실행하기 위해 필요한 데이터이다. 리턴 값은 메서드가 실행되고 난 후 호출한 곳으로 돌려주는 값이다.
int result = Calculator.add(10, 20);
리턴한 값을 int 변수에 저장한다.
- 객체의 상호작용은 객체 간의 메서드 호출을 의미하며 매개 값과 리턴 값을 통해서 데이터를 주고받는다.
2. 객체 간의 관계
① 집합 관계에 있는 객체는 하나는 부품이고 하나는 완성품에 해당한다.
예시) 자동차 - 엔진, 타이어, 핸들
② 사용 관계는 객체 간의 상호작용을 말한다.
예시) 사람 - 자동차
③ 상속 관계는 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성하는 관계를 말한다.
예시) 기계 - 자동차
- 객체 지향 프로그래밍은 만들고자 하는 완성품인 객체를 모델링하고, 집합 관계에 있는 부품 객체와 사용 관계에 있는 객체를 하나씩 설계한 후 조립하는 방식으로 프로그램을 개발하는 기법을 말한다.
3. 객체와 클래스
- 메모리에서 사용하고 싶은 객체가 있다면 우선 설계도로 해당 객체를 만드는 작업이 필요하다.
- 이 설계도가 바로 클래스이며 클래스에는 객체를 생성하기 위한 필드와 메서드가 정의되어 있다.
- 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스라고 하며 클래스로부터 객체를 만드는 과정을 인스턴스화라고 한다.
4. 클래스 선언
- 클래스 이름 작성 규칙(식별자 작성 규칙)
① 하나 이상의 문자로 이루어져야 한다.
② 첫 글자에는 숫자가 올 수 없다.
③ '$', '_' 외의 특수 문자는 사용할 수 없다.
④ 자바 키워드는 사용할 수 없다.
⑤ 서로 다른 단어가 혼합되었다면 각 단어의 첫 글자는 대문자로 작성한다.
5. 객체 생성과 클래스 변수
- 클래스로부터 객체를 생성하려면 다음과 같이 new 연산자를 사용한다. : new 클래스();
- new 연산자는 객체를 메모리 힙 영역에 생성시키고 객체의 번지를 리턴한다.
- 이 주소를 참조 타입인 클래스 변수에 저장해두면 변수를 통해 객체를 사용할 수 있다.
- StudentExample을 실행하면 메모리에 클래스 변수와 객체가 생성된다.
- Student 클래스는 하나지만 new 연산자를 사용한 만큼 객체가 메모리에 생성되고, 이러한 객체들은 Student 클래스의 인스턴스이다.
- 같은 클래스로부터 생성되었지만 각각의 Student 객체는 자신만의 고유 데이터를 가지면서 메모리에서 활동하게 된다.
- s1과 s2가 참조하는 Student 객체는 완전히 독립된 서로 다른 객체이다.
○ Student와 StudentExample 클래스의 용도
- 클래스는 라이브러리용과 실행용이 있고, 라이브러리 클래스는 다른 클래스에서 이용할 목적으로 설계된다.
- 실행 클래스는 프로그램의 실행 진입점인 main() 메서드를 제공하는 역할을 한다.
- Student는 라이브러리 클래스이고 StudentExample은 실행 클래스이다.
- 단 하나의 클래스로 작성할 수 있지만, 대부분의 객체 지향 프로그램은 라이브러리(부품 객체 및 완성 객체)와 실행 클래스가 분리되어 있다.
6. 클래스의 구성 멤버
① 필드 : 객체의 고유 데이터, 부품 객체, 상태 정보를 저장하는 곳
- 선언 형태는 변수와 비슷하지만, 필드를 변수라고 부르지는 않는다.
- 변수는 생성자와 메서드 내에서만 사용되고 생성자와 메서드가 실행 종료되면 자동 소멸된다.
- 필드는 생성자와 메서드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재한다.
② 생성자 : new 연산자로 호출되는 특별한 중괄호 {} 블록이다.
- 객체 생성 시 초기화를 담당하는데, 필드를 초기화하거나 메서드를 호출해서 객체를 사용할 준비를 한다.
- 생성자는 메서드와 비슷하게 생겼지만, 클래스 이름으로 되어 있고 리턴 타입이 없다.
③ 메서드 : 객체의 동작에 해당하는 중괄호 {} 블록을 말한다.
- 중괄호 블록은 이름을 가지고 있는데, 이것이 메서드 이름이다.
- 메서드를 호출하게 되면 중괄호 블록에 있는 모든 코드들이 일괄적으로 실행된다.
- 이때 메서드는 필드를 읽고 수정하는 역할도 하지만, 다른 객체를 생성해서 다양한 기능을 수행하기도 한다.
- 메서드는 객체 간의 데이터를 전달하는 수단이며, 외부(호출한 곳)로부터 매개 값을 받아 실행에 이용하고, 실행 후 결과 값을 외부(호출한 곳)로 리턴할 수도 있다.
'취업성공패키지 SW 개발자 교육 > Java' 카테고리의 다른 글
30. IO (Input & Output) ① (0) | 2020.03.30 |
---|---|
29. 스레드 (0) | 2020.03.30 |
28. ArrayList ② (0) | 2020.03.26 |
27. ArrayList, foreach (0) | 2020.03.25 |
26. 간단한 텍스트 게임 만들기 (0) | 2020.03.25 |