객체 : 하나 이상의 데이터와 기능을 묶은 것. 자신의 데이터를 사용해 하나의 역할을 수행하는 독립된 단위
- 물리적으로 존재하는 것
- 데이터들+기능(메서드)들 / 객체지향 프로그램들 = 객체+객체+...
- 추상적인 것 중에서 자신의 속성(필드)과 동작(메서드)을 가지는 모든 것(속성+동작)
- 상태는 객체의 속성
객체 생성 : 클래스의 구성을 참조해 속성과 메서드에 대한 정보를 메모리에 할당하는 작업
자바는 객체지향 언어.
객체 지향 개발 방법론 : "코드의 재사용을 높이자." 재사용성을 고려했다. 데이터의 변경에 해당 객체만 영향을 받도록 분리하는 방법론. 실행 흐름은 데이터와 기능을 함께 묶은 객체 간에 상호 작용하는 방식.작업 순서를 생각하지 않고 기능별로 작업을 분리한 후 필요한 기능이 있다면 가져다 사용하는 방식. 핵심은 객체. 객체 간에는 연관성이 낮아야하고(결합도), 객체 내 요소(데이터와 기능) 간에는 연관성이 높아야 한다(응집도).
OOP(Object Oriented Programming) : 객체들을 먼저 만들고 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법.(모든 관점을 객체라는 단위로 바라본다.)
객체 모델링 : 현실 세계의 객체를 소프트웨어 객체로 설계하는 것. 객체를 선정하고 객체의 속성과 동작을 정의하는 것. 객체의 특성을 쉽게 알 수 있다. 객체를 구조화하는 것.
클래스 : 객체를 만드는 틀(공통인 변수와 메소드를 정의하는 틀), 객체를 만드는 설계도
- 라이브러리(API,Application Program Interface)용 : 자체적으로 실행되지 않음, 다른 클래스에서 이용할 목적으로 만든 클래스
- 실행용 : main() 메소드를 가지고 있는 클래스로 실행할 목적으로 만든 클래스
- 1개의 애플리케이션 = (1개의 실행클래스) + (n개의 라이브러리 클래스)
인스턴스 : 클래스로부터 만들어지는 각각의 객체를 그 클래스의 인스턴스라고 함. 클래스라는 틀을 기반으로 실체화 된 대상. 클래스를 new 명령문으로 메모리에 생성한 객체
인스턴스화 : 클래스를 이용해서 실제인 객체를 생성하는 과정
클래스 다이어그램 : 객체 모델링에서 표현된 구조를 프로그래밍 언어로 표현하기 쉽게 작성한 것.
객체 모델링 | 클래스 다이어그램 | 설명 |
객체 | 클래스 | 객체를 대표하는 클래스 이름 정의 |
속성 | 필드 | 객체가 가진 고유한 특성을 정의 |
동작 | 메서드 | 객체가 할 수 있는 동작을 정의 |
클래스 선언 : 소스 파일당 하나의 클래스를 선언하는 것이 관례
- 두 개 이상의 클래스도 선언 가능
- 클래스 이름은 객체를 대표하는 이름으로 지정
- 문자,숫자,'_','$'를 사용할 수 있다
- 첫 글자는 숫자를 사용할 수 없고, 대문자로 시작하는 것이 관례
- 공백을 가질 수 없다.
- 여러 단어가 사용되는 경우 단어의 첫 글자를 대문자로 시작하거나 밑줄(_)로 연결한다.
- class라는 예약어 사용
- 소스 파일 이름과 동일한 클래스만 public으로 선언 가능
- 선언한 개수(클래스 수)만큼 바이트 코드 파일이 생성
클래스 작성규칙
- 하나 이상의 문자로 이루어져야 한다.
- 첫번째 글자는 숫자가 올 수 없다
- _,$ 외의 특수 문자는 사용할 수 없다
- 자바 키워드는 사용할 수 없다
#클래스 선언
[class 클래스명{
필드 선언;
메서드 선언;
}]
#필드 선언 (필드도 값을 대입할 수 있는 변수 중 하나, 멤버변수라고 부르기도한다)
[데이터 타입 변수 이름; or 데이터 타입 변수 이름 = 값;]
#메서드 선언
[접근 제한자 리턴타입 메서드명(매개변수){
실행문;
}]
메서드 이름 지정 규칙
- 첫 글자는 소문자 시작
- 기능을 나타낼 수 있는 이름으로 지정
- 공백X
- 숫자 시작X
접근 제한자 : 각 요소에 접근 권한을 조절하는 방법.
private | 접근하는 곳이 같은 클래스 외부에서 접근하는 것을 차단해 의도하지 않은 데이터 변형을 막음 |
(default) | 접근하는 곳이 같은 패키지 자동지정 |
protected | 접근하는 곳이 같은 패키지 또는 패키지가 다를 때 상속 관계 |
public | 조건없이 무조건 접근 가능 외부에 공개해 누구나 사용할 수 있게 하려는 목적 |
[접근 제한자 class 클래스명{
접근 제한자 필드 선언;
접근 제한자 메서드 선언
}]
추상화(abstraction) : 불필요한 속성을 제거하는 과정
기초변수는 실제 데이터 값
참조 변수는 객체의 주소
객체는 우리가 프로그래밍으로 표현하려는 실체, 클래스는 실체를 추상화한 설계도, 클래스를 인스턴스화하면 객체 생성
Car myCar = new Car();
- myCar는 객체 참조 변수
- new 연산자로 실제 객체 생성 다음에는 클래스 이름과 동일한 생성자
- 실행되면 myCar라는 물리적인 객체가 실제로 생성
- 실제로 생성된 객체를 클래스의 인스턴스
객체의 필드와 메소드
참조 변수.접근할 필드=값;
참조 변수.메소드;
필드사용
클래스 내부: "필드이름"으로 바로 접근
클래스 외부: "변수. 필드이름"
메소드 호출
클래스 내부: 메소드 이름으로 호출
클래스 외부: 객체 생성 후, 참조 변수를 이용해 호출
객체 소멸 : new에 의해 할당된 객체 메모리를 자바 가상 기계의 가용 메모리로 되돌려 주는 행위
자바 응용프로그램에서 임의로 객체 소멸할 수 없음, 객체 소멸은 자바 가상 기계의 고유한 역할
가비지 : 가리키는 레퍼런스가 하나도 없는 객체(누구도 사용할 수 없게 된 메모리)
가비지 컬렉션 : 자바 가상기계의 가비지 컬렉터가 자동으로 가비지 수집 반환
'Java' 카테고리의 다른 글
Java 네트워크 프로그래밍 (0) | 2023.05.17 |
---|---|
Java 생성자 및 클래스 변수, 클래스 메서드 (1) | 2023.05.14 |
Java 배열 (0) | 2023.05.13 |
Java 제어문(조건문, 반복문, 보조제어문) (0) | 2023.05.13 |
Java 변수 및 연산자, 수식 (0) | 2023.05.13 |