항해99 - day10

Dasole Kwon·2022년 5월 19일
0

항해99

목록 보기
7/47

이번주 며칠동안 TIL을 적을 여유가 없었다.
알고리즘 기초 퀴즈들 및 자바 객체지향에 대해 흡수하느라 정신없이 한 주가 지나가고 있다. 내일부터 주특기(스프링)에 대해 기초지식 입문이 시작된다. (기초가 아닐거라고 확신함..)

아직도 감이 안잡히고 갈 길이 멀었지만, 기본내용들을 정리하며 머리에 넣어야겠다.

자바 - 객체지향 (from 자바의정석 by 남궁성)

  • 객체지향언어의 주요 특징
  1. 코드의 재사용성이 높다: 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성 할 수 있다.
  2. 코드의 관리가 용이하다: 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경 할 수 있다.
  3. 신뢰성이 높은 프로그래밍을 가능하게 한다: 제어자와 메서드를 이용하여 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거한다.
  • 클래스란?
    객체를 정의해놓은 것. 또는 객체의 설계도 또는 틀. 클래스는 객체를 생성하는데 사용.
  • 객체란?
    실제로 존재하는 것, 사물 또는 개념이며 클래스에 정의된 내용대로 메모리에 생성되는 것을 뜻함.
클래스객체
제품 설계도제품
TV 설계도TV
붕어빵 기계붕어빵
  • 객체와 인스턴스
    :클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화, 어떤 클래스로부터 만들어진 겍체는 인스턴스
                               **인스턴스화**
    					클래스 -----------------> 인스턴스(객체)
                        
                        

또한, 객체의 구성요소에는 속성과 기능이 있는데 아래와 같이 정의 할 수 있다.
- 속성(property): 멤버변수, 특성, 필드, 상태
- 기능(function): 메서드, 함수, 행위

TV로 예를 들자면,
속성: 크기, 길이, 높이, 색상 ,볼륨, 채널 등

class TV {
String color; //색깔
boolean power; //전원상태
int channel; //채널
}

기능: 켜기, 끄기, 볼륨 높이기, 볼륨 낮추기, 채널 변경하기 등

void power() { power = !power; }
void channelUp() { channel++; }
void channelDown() { channel--; }

  • 인스턴스의 생성과 사용. 보통 하기와 같이 틀을 짠다.
클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조 변수를 선언
변수명 = new 클래스명 (); //클래스의 객체를 생성 후, 참조변수에 저장

Tv t; // TV클래스 타입의 참조변수 t를 선언
t = new Tv(); //TV인스턴스 생성 후, 생성된 TV인스턴스의 주소를 t에 저장

인스턴스는 참조변수를 통해서만 다룰 수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야한다.

하기 표는 비객체지향적 코드와 객체지향적 코드를 비교한 것이다.

비객체지향적 코드객체지향적 코드
int hour1, hour2, hour3;Time t1 = new Time();
int minute1, minute2, minute3;Time t2 = new Time();
float second1, second1, second1;Time t3 = new Time();
int [] hour = new int[3];Time[]t = new Time[3];
int [] minute = new int[3];Time[0]t = new Time[];
int [] second = new float[3];Time[1]t = new Time[];

  • 변수와 메서드
    변수에는 클래스변수, 인스턴스변수, 지역변수 모두 세 종류가 있다.
    {
    	int iv;  //인스턴스변수
       static int cv;    //클래스변수(static변수, 공유변수)
       void method()    
       {
       	int lv = 0;    //지역변수
       }
    }


**1. 인스턴스변수(instance variable)**
: 클래스 영역에 선언되며, 클래스의 인스턴스를 생성할때 만들어진다. 
그렇기 때문에 인스턴스 변수의 값을 읽어오거나 저장하기 위해서는 먼저 인스턴스를 생성해야한다.

**2. 클래스변수(class variable)**
: 클래스 변수를 선언하는 방법은 인스턴스변수앞에 static을 붙이기만 하면 된다. 
클래스 변수는 모든 인스턴스가 공통된 저장공간(변수)를 공유한다.

**3. 지역변수(local variable)**
: 메서드 내에 선언되어 메서드 내에서만 사용 가능하며, 
메서드가 종료되면 소멸되어 사용 할 수 없다. for문 또는 while문의 블럭 내에서
선언된 지역변수는 지역변수가 선언된 {}블럭에서만 사용 가능하다.

0개의 댓글