자바의 정석 Day4

AWESOMee·2022년 7월 18일
0

JAVA

목록 보기
4/5
post-thumbnail

객체지향 언어

  • 코드의 재사용성이 높고 유지보수가 용이, 중복 코드 제거
  • 객체지향 언어는 기존의 프로그래밍 언어에 객체지향개념(규칙)이 추가된 것

OOP(Object-Oriented Programming) - 객체지향 프로그래밍의 핵심 개념

  1. 캡슐화
  2. 상속
  3. 추상화
  4. 다형성(가장 중요)

클래스와 객체

  • 클래스의 정의 - 객체를 정의해 놓은 것
  • 클래스의 용도 - 객체를 생성하는데 사용
  • 객체의 정의 - 실제로 존재하는 것. 사물 또는 개념
  • 객체의 용도 - 객체가 가지고 있는 기능과 속성에 따라 다름

객체의 구성요소 - 속성과 기능

객체 = 속성(변수) + 기능(메서드)

클래스 작성시 주의사항

  • 가능하면 하나의 소스파일에 하나의 클래스 작성
    -> 여러개의 클래스도 작성 가능하지만 하나의 소스파일에 하나의 public class만 허용
  • 소스파일의 이름은 public class의 이름과 일치(대소문자 구분)

객체의 생성과 사용

Tv t; // 클래스의 객체를 참조하기 위한 참조변수를 선언
t = new Tv(); // 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장

new연산자는 객체를 만들고 객체의 주소를 반환함

  • 하나의 인스턴스를 여러 개의 참조변수가 가리키는 것은 가능하지만
  • 여러 인스턴스를 하나의 참조변수가 가리키는 것은 불가능하다.

객체 배열

객체 배열 == 참조변수 배열

Tv[] tvArr = new Tv[3]; // 길이가 3인 Tv타입의 참조변수 배열

// 객체를 생성해서 배열의 각 요소에 저장
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();

// 위 방식을 간단하게 하면,
Tv[] tvArr = { new Tv(), new Tv(), new Tv() };

클래스

클래스 == 데이터 + 함수

  1. 변수: 하나의 데이터를 저장할 수 있는 공간
  2. 배열: 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간
  3. 구조체: 서로 관련된 여러 데이터(종류 관계X)를 하나로 저장할 수 있는 공간
  4. 클래스: 데이터와 함수의 결함(구조체 + 함수)

  • 사용자 정의 타입 - 원하는 타입을 직접 만들수 있다.
// 비객체지향적 코드
int hour = 12;
int minute = 34;
int second = 56;

// 객체지향적 코드
Time t = new Time();
t.hour = 12;
t.minute = 34;
t.second = 56;

class Time {
	int hour;
    int minute;
    int second;
}

객체지향적으로 작성하면 서로 관련된 값들을 강하게 묶을 수 있고, 코드가 덜 복잡하고 유지보수하기 쉽다.

선언위치에 따른 변수의 종류

class Variables {
	int iv; // 인스턴스 변수(instance variable)
    static int cv; // 클래스 변수(static변수, 공유변수)(class variable)
    
    void method() {
    	int lv = 0; // 지역변수(local variable)
    }
}
  • 클래스 변수(공통 속성) CV
    선언위치 - 클래스영역,
    생성시기 - 클래스가 메모리에 올라갈 때(객체 생성 필요없이 자동으로 생성)
    아무 때나 사용 가능하기 때문에 객체 생성 필요하지 않음
  • 인스턴스 변수(개별 속성) IV
    선언위치 - 클래스 영역,
    생성시기 - 인스턴스가 생성되었을 때
    객체 생성해야 사용 가능함, 객체 마다 1개씩 생성
  • 지역변수 LV
    선언위치 - 클래스 영역 이외의 영역(메서드 생성자, 초기화 블럭 내부)
    생성시기 - 변수 선언문이 수행되었을 때
profile
개발을 배우는 듯 하면서도

0개의 댓글