오늘이라도

혼자 공부하는 자바, Ch 06-1 객체 지향 프로그래밍 본문

취업성공패키지 SW 개발자 교육/Java

혼자 공부하는 자바, Ch 06-1 객체 지향 프로그래밍

upcake_ 2020. 3. 26. 19:38
반응형

https://github.com/upcake/Class_Examples

교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다. 


0. 객체의 정의

 - 객체란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있으면서 식별 가능한 것을 말한다.

 - 객체는 속성과 동작으로 구성되어 있고 자바에서는 이 속성과 동작을 각각 필드와 메서드라고 부른다.

 - 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 객체 모델링이라고 한다.

 - 객체 모델링은 현실 세계 객체의 속성과 동작을 추려내어 소프트웨어 객체의 필드와 메서드로 정의하는 과정이라고 볼 수 있다.

 

 

1. 객체의 상호작용

 - 객체들은 각각 독립적으로 존재하고, 다른 객체와 서로 상호작용 하면서 동작한다.

 - 객체들 사이의 상호작용 수단은 메서드이고, 이때 객체가 다른 객체의 기능을 이용하는 것이 메서드 호출이다.

 - 리턴 값 = 전자계산기객체.메서드(매개값1, 매개값2, ...);

 - 객체에 도트(.) 연산자를 붙이고 메서드 이름을 기술한다. 도트 연산자는 객체의 필드와 메서드에 접근할 때 사용한다.

 - ② 매개 값은 메서드를 실행하기 위해 필요한 데이터이다. 리턴 값은 메서드가 실행되고 난 후 호출한 곳으로 돌려주는 값이다.

int result = Calculator.add(10, 20);
리턴한 값을 int 변수에 저장한다.

 - 객체의 상호작용은 객체 간의 메서드 호출을 의미하며 매개 값과 리턴 값을 통해서 데이터를 주고받는다.

 

 

2. 객체 간의 관계

 ① 집합 관계에 있는 객체는 하나는 부품이고 하나는 완성품에 해당한다.

  예시) 자동차 - 엔진, 타이어, 핸들

 ② 사용 관계는 객체 간의 상호작용을 말한다.

  예시) 사람 - 자동차

 ③ 상속 관계는 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성하는 관계를 말한다.

  예시) 기계 - 자동차

 - 객체 지향 프로그래밍은 만들고자 하는 완성품인 객체를 모델링하고, 집합 관계에 있는 부품 객체와 사용 관계에 있는 객체를 하나씩 설계한 후 조립하는 방식으로 프로그램을 개발하는 기법을 말한다.

 

 

3. 객체와 클래스

 - 메모리에서 사용하고 싶은 객체가 있다면 우선 설계도로 해당 객체를 만드는 작업이 필요하다.

 - 이 설계도가 바로 클래스이며 클래스에는 객체를 생성하기 위한 필드와 메서드가 정의되어 있다.

 - 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스라고 하며 클래스로부터 객체를 만드는 과정을 인스턴스화라고 한다.

 

 

4. 클래스 선언

 - 클래스 이름 작성 규칙(식별자 작성 규칙)

  ① 하나 이상의 문자로 이루어져야 한다.

  ② 첫 글자에는 숫자가 올 수 없다.

  ③ '$', '_' 외의 특수 문자는 사용할 수 없다.

  ④ 자바 키워드는 사용할 수 없다.

  ⑤ 서로 다른 단어가 혼합되었다면 각 단어의 첫 글자는 대문자로 작성한다.

 

 

5. 객체 생성과 클래스 변수

 - 클래스로부터 객체를 생성하려면 다음과 같이 new 연산자를 사용한다. : new 클래스(); 

 - new 연산자는 객체를 메모리 힙 영역에 생성시키고 객체의 번지를 리턴한다.

 - 이 주소를 참조 타입인 클래스 변수에 저장해두면 변수를 통해 객체를 사용할 수 있다.

▲예제 1-1. 클래스 선언
▲예제 1-2. 클래스로부터 객체 생성

 - 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