1. 객체지향
OOP (Object-Oriented Programming)
객체지향의 기본개념은 모든 사물의 속성과 기능을 분석하여 객체로 만들고
모든 사건들을 객체간의 상호작용으로 이해하는 것이다.
객체지향의 특징
- 상속
- 캡슐화
- 추상화
- 다형성
객체지향의 장점
- 코드의 재사용성이 높다.
- 코드의 유지·보수성이 높다.
- 중복 코드의 제거
2.클래스와 객체
클래스
객체지향 관점에서 클래스란 객체를 정의해 놓은 것이다.
객체를 생성하는데 사용된다.
1) 하나의 소스파일에 하나의 클래스가 기본이다.
2) 소스파일의 이름은 public class의 이름과 같이야한다.
3) 그러나 public class가 없으면 상관 없다.
한편 프로그래밍 관점에서 클래스는 다음과 같이 나눌 수 있다.
1) 설계도
2) 데이터(변수)와 함수(메서드)의 결합
3) 사용자 정의 타입
객체
객체란 실제로 존재하는 것이다. 객체는 사물 뿐만 아니라 개념, 논리 같은 무형적 객체도 포함한다.
프로그래밍에서 객체는 클래스에 정의된 내용대로 메모리에 생성된 것이다.
객체의 용도는 각각의 객체의 구성요소인 기능과 속성에 따라 달라진다.
속성 (property) = 멤버변수(주로 사용), 특성, 필드, 상태..는 같은 뜻이다.
기능 (function) = 메서드(주로 사용), 함수, 행위..는 같은 뜻이다.
객체와 인스턴스
클래스로부터 객체를 만드는 과정을 인스턴스화라고 하고 만들어진 객체를 인스턴스라고 한다.
즉 객체랑 인스턴스는 사실상 같은 의미이다.
그러나 문맥적으로 따져 보자면
객체는 모든 인스턴스를 포함하는 포괄적인 의미로,
인스턴스는 어떤 클래스로부터 만들어진 것인지를 강조하는 구체적 의미로 쓰인다.
ex) 책상은 객체다. 책상은 책상클래스의 인스턴스다.
인스턴스를 생성하는 방법
클래스 (참조)변수명; //클래스 타입의 참조변수를 선언 - 메모리만 배정한 것이라 아무것도 할 수 없다.
(참조)변수명 = new 클래스명(); //클래스 타입의 새로운 인스턴스를 생성하고, 그 주소를 변수에 저장한다.
클래스 (참조)변수명 = new 클래스명(); // 위의 두 코드는 하나로 합칠 수 있다.
클래스 (참조)변수명1, (참조)변수명1 = new 클래스명(); // 두 인스턴스를 한번에 생성 할 수도 있다.
참조변수.인스턴스멤버변수 = 값; //참조변수에 저장된 주소의 인스턴스멤버변수 칸에 값을 저장한다.
참조변수.메서드(); //참조변수가 참조하는 메서드를 호출한다.
참조변수는 인스턴스의 주소를 저장한다.
따라서 참조변수1 = 참조변수2의 형태로는 개별 값만 복사되는 것이 아니라 아예 같은 주소를 공유하게 된다.
객체배열 ( = 참조변수 배열)
클래스[] 참조변수 = new 클래스[배열크기]; // 참조변수 배열을 생성
참조변수[0] = new 클래스();
...
참조변수[i] = new 클래스(); //객체를 생성해서 배열의 각 요소로 저장
클래스[] 참조변수 = {new 클래스(), new 클래스(),....new 클래스()}; //한줄로 줄일 수 있다.
3. 변수와 메서드
변수
선언 위치에 따른 변수의 종류
1) 인스턴스 변수
클래스 영역에 선언, 인스턴스가 생성되었을 때 생성
인스턴스마다 고유의 상태를 유지해햐하는 속성의 경우일때 사용한다.
2) 클래스 변수
클래스 영역에 선언, 클래스가 메모리에 올라갈때 즉 클래스가 필요할때 생성
'static + 인스턴스 변수' 형태로 선언하고, '클래스이름.클래스변수' 형태로 사용한다.
모든 인스턴스가 공통된 저장공간(변수)를 공유한다.
클래스 변수는 인스턴스를 생성하지 않고도 언제든지 바로 사용할 수 있다.
3) 지역 변수
클래스 이외에의 영역에 선언, 변수 선언문이 수행되었을 때 생성
메서드 내에 선언되어 메서드 내에서만 사용 가능하며 메서드가 종료되면 소멸된다.
메서드
메서드는 객체지향 개념에서 함수와 같다.
하나의 메서드는 하나의 기능만 수행하도록 하는 것이 좋다.
반환타입 메서드이름 (타입 변수명, 타입 변수명,...) { //선언부
매서드 호출시 수행될 코드 //구현부
return 반환값;
}
메서드를 호출하는 방법
메서드이름(값1, 값2,...); //메서드 호출
타입 변수명 = 메서드이름(값1, 값2, ..._); //메서드 호출 후 결과를 저장
return문
현재 실행중인 메서드를 종료하고 호출한 메서드로 돌아간다.
기본형 매개변수와 참조형 매개변수
기본형 매개변수 : 값만 읽음 (메서드(변수명.멤버변수))
참조형 매개변수 : 주소를 읽음 (메서드(변수명))
참조형 반환타입
?
인스턴스 메서드와 클래스 메서드(static 메서드)
1)인스턴스 메서드
- 인스턴스 생성후, '참조변수. 메서드 이름( )'으로 호출한다.
- 인스턴스(iv), 멤버(mv)변수와 관련된 작업을 하는 메서드.
- 메서드 내에서 인스턴스 변수(iv)를 사용할 수 있다.
2) 클래스 메서드(static 메서드)
- 객체 생성 없이, '클래스이름. 메서드 이름( )'으로 호출한다.
- 인스턴스(iv), 멤버(mv)변수와 관련 없는 작업을 하는 메서드.
- 메서드 내에서 인스턴스 변수(iv)를 사용할 수 없다.
4.오버로딩
5.생성자
6.변수의 초기화
'JABA' 카테고리의 다른 글
| 16. stream을 이용하여 객체의 특정 요소를 기준으로 정렬하기 (0) | 2023.04.07 |
|---|---|
| 15. 반복문으로 객체 만들기 (0) | 2023.04.05 |
| 12. static (0) | 2023.03.24 |
| 11. 생성자와 Method 메서드 (0) | 2023.03.24 |
| 10. format 출력 printf (0) | 2023.03.24 |