객체 :  하나 이상의 데이터와 기능을 묶은 것. 자신의 데이터를 사용해 하나의 역할을 수행하는 독립된 단위

  • 물리적으로 존재하는 것 
  • 데이터들+기능(메서드)들 / 객체지향 프로그램들 = 객체+객체+...
  • 추상적인 것 중에서 자신의 속성(필드)과 동작(메서드)을 가지는 모든 것(속성+동작)
  • 상태는 객체의 속성

객체 생성 : 클래스의 구성을 참조해 속성과 메서드에 대한 정보를 메모리에 할당하는 작업

 

자바는 객체지향 언어.

객체 지향 개발 방법론 : "코드의 재사용을 높이자." 재사용성을 고려했다. 데이터의 변경에 해당 객체만 영향을 받도록 분리하는 방법론. 실행 흐름은 데이터와 기능을 함께 묶은 객체 간에 상호 작용하는 방식.작업 순서를 생각하지 않고 기능별로 작업을 분리한 후 필요한 기능이 있다면 가져다 사용하는 방식. 핵심은 객체. 객체 간에는 연관성이 낮아야하고(결합도), 객체 내 요소(데이터와 기능) 간에는 연관성이 높아야 한다(응집도).

 

OOP(Object Oriented Programming) : 객체들을 먼저 만들고 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법.(모든 관점을 객체라는 단위로 바라본다.)

 

객체 모델링 : 현실 세계의 객체를 소프트웨어 객체로 설계하는 것. 객체를 선정하고 객체의 속성과 동작을 정의하는 것. 객체의 특성을 쉽게 알 수 있다. 객체를 구조화하는 것.

 

클래스 : 객체를 만드는 틀(공통인 변수와 메소드를 정의하는 틀), 객체를 만드는 설계도

  • 라이브러리(API,Application Program Interface)용  :  자체적으로 실행되지 않음, 다른 클래스에서 이용할 목적으로 만든 클래스
  • 실행용 : main() 메소드를 가지고 있는 클래스로 실행할 목적으로 만든 클래스
  • 1개의 애플리케이션 = (1개의 실행클래스) + (n개의 라이브러리 클래스)

인스턴스 : 클래스로부터 만들어지는 각각의 객체를 그 클래스의 인스턴스라고 함. 클래스라는 틀을 기반으로 실체화 된 대상. 클래스를 new 명령문으로 메모리에 생성한 객체 

인스턴스화 : 클래스를 이용해서 실제인 객체를 생성하는 과정

 

클래스 다이어그램 : 객체 모델링에서 표현된 구조를 프로그래밍 언어로 표현하기 쉽게 작성한 것.

객체 모델링 클래스 다이어그램 설명
객체 클래스 객체를 대표하는 클래스 이름 정의
속성 필드 객체가 가진 고유한 특성을 정의
동작 메서드 객체가 할 수 있는 동작을 정의

클래스 선언 : 소스 파일당 하나의 클래스를 선언하는 것이 관례

  • 두 개 이상의 클래스도 선언 가능
  • 클래스 이름은 객체를 대표하는 이름으로 지정
  • 문자,숫자,'_','$'를 사용할 수 있다
  • 첫 글자는 숫자를 사용할 수 없고, 대문자로 시작하는 것이 관례
  • 공백을 가질 수 없다.
  • 여러 단어가 사용되는 경우 단어의 첫 글자를 대문자로 시작하거나 밑줄(_)로 연결한다.
  • class라는 예약어 사용
  • 소스 파일 이름과 동일한 클래스만 public으로 선언 가능
  • 선언한 개수(클래스 수)만큼 바이트 코드 파일이 생성

클래스 작성규칙

  1. 하나 이상의 문자로 이루어져야 한다.
  2. 첫번째 글자는 숫자가 올 수 없다
  3. _,$ 외의 특수 문자는 사용할 수 없다
  4. 자바 키워드는 사용할 수 없다

#클래스 선언 

[class 클래스명{

  필드 선언;

  메서드 선언;

}]

 

#필드 선언 (필드도 값을 대입할 수 있는 변수 중 하나, 멤버변수라고 부르기도한다)

[데이터 타입 변수 이름; or 데이터 타입 변수 이름 = 값;]

 

#메서드 선언 

[접근 제한자 리턴타입 메서드명(매개변수){

   실행문;

}]

 

메서드 이름 지정 규칙

  • 첫 글자는 소문자 시작
  • 기능을 나타낼 수 있는 이름으로 지정
  • 공백X
  • 숫자 시작X

접근 제한자 : 각 요소에 접근 권한을 조절하는 방법.

private 접근하는 곳이 같은 클래스
외부에서 접근하는 것을 차단해 의도하지 않은 데이터 변형을 막음
(default) 접근하는 곳이 같은 패키지
자동지정
protected 접근하는 곳이 같은 패키지 또는 패키지가 다를 때 상속 관계
public 조건없이 무조건 접근 가능
외부에 공개해 누구나 사용할 수 있게 하려는 목적

[접근 제한자 class 클래스명{
  접근 제한자 필드 선언;

  접근 제한자 메서드 선언

}]

 

추상화(abstraction) : 불필요한 속성을 제거하는 과정

기초변수는 실제 데이터 값

참조 변수는 객체의 주소

 

객체는 우리가 프로그래밍으로 표현하려는 실체, 클래스는 실체를 추상화한 설계도, 클래스를 인스턴스화하면 객체 생성

 

Car myCar = new Car();

  • myCar는 객체 참조 변수
  • new 연산자로 실제 객체 생성 다음에는 클래스 이름과 동일한 생성자
  • 실행되면 myCar라는 물리적인 객체가 실제로 생성
  • 실제로 생성된 객체를 클래스의 인스턴스

객체의 필드와 메소드

참조 변수.접근할 필드=값;

참조 변수.메소드;

 

필드사용

클래스 내부: "필드이름"으로 바로 접근

클래스 외부: "변수. 필드이름"

 

메소드 호출

클래스 내부: 메소드 이름으로 호출

클래스 외부: 객체 생성 후, 참조 변수를 이용해 호출

 

객체 소멸 : new에 의해 할당된 객체 메모리를 자바 가상 기계의 가용 메모리로 되돌려 주는 행위

자바 응용프로그램에서 임의로 객체 소멸할 수 없음, 객체 소멸은 자바 가상 기계의 고유한 역할

 

가비지 : 가리키는 레퍼런스가 하나도 없는 객체(누구도 사용할 수 없게 된 메모리)

가비지 컬렉션 : 자바 가상기계의 가비지 컬렉터가 자동으로 가비지 수집 반환

+ Recent posts