day07 (클래스와 객체, 함수)

2023. 12. 18. 16:01자바 기초 및 세팅

절차 지향 프로그래밍

일어나는 일을 시간순으로 프로그래밍 하는 것.

아침에 일어난다 > 씻는다 > 밥을 먹는다 > 버스를 탄다 > 요금을 지불 

> 학교에 도착

 

객체 지향 프로그래밍

객체를 정의하고 객체 간 협력을 프로그래밍 하는 것. 

  • 어떤 일(기상, 씻기, 식사 등)을 하기 위해서 일을 하기 위한 객체(학생)를 만들고 만들어진 객체를 이용하여 작업 

[학생]이 일어난다.

[학생]이 씻는다.

[학생]이 [밥]을 먹는다.

[학생]이 [버스]를 탄다. 

[학생]이 요금을 지불한다.

[학생]이 [학교]에 도착한다.

 

클래스란?

클래스는 객체(현실의 정보)의 속성과 기능을 코드로 구현한 것.

속성 : 멤버변수

기능 : 메소드(메서드)

클래스를 정의한다.(추상화)

  • 객체(현실의 정보)를 클래스로 구현하는 것.
  • 학생이란 객체를 Student라는 클래스로 구현하는 것.

클래스

(접근제어자) class 클래스명{

(접근제어자) 멤버변수;//

(접근제어자) 메서드; // 기능

}

 

멤버 변수

 

객체(현실의 정보) 속성

객체(현실의 정보)을 나타낼 수 있는 정보

  • 대학생의 학번, 이름, 학년, 사는 곳 등이 대학생의 정보
  • 대학생 클래스의 멤버변수는 학번, 이름, 학년, 사는 곳이 된다.

따로 초기화 하지 않아도 각 타입의 기본값으로 초기화가 됨.

멤버 변수는 기본형도 가능하지만 참조형(String 등)도 가능.

 

자료형 기본값
boolean false
char ‘\u0000’
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0 또는 0.0d
참조형 변수 null

 

메서드 

클래스의 기능 

 

다른표현으로 멤버 함수.

자바에서 모든 함수는 메서드이다.

 

패키지

간단히 설명하면 클래스 파일의 묶음.

비슷한 기능들을 하는 클래스들끼리 묶어 놓는게 일반적이다.

  • java.util, java.lang

패키지를 이용하여 계층구조를 잡을 수 있고, 이를 이용하여 소스코드 관리와 유지 보수가 편리하게 한다.

 

함수란?

 

하나의 기능을 수행하는 일련의 코드

일을 시키는것

필요한 기능을 미리구현해 놓고 필요할 때마다 호출 하여 사용.

- 재사용

예 : 두 수를 더하는 함수

 

함수의 입력

함수가 실행하기 위해 필요한 정보로 매개변수라 한다.

매개변수는 꼭 필요한 정보만 사용한다.

 

예 ㅣ 두 수를 더하는 함수에서 필요한 정보는 두 수만 필요하지만, 세번째 수는 필요 없다.

 

함수의 반환

함수가 실행 후 알려주는 값을 반환값이라고 한다.

 

반환값의 타입을 반환타입 또는 리턴 타입이라고 한다.

반환값은 return이라는 예약어를 사용한다.

반환값이 피룡없는 경우 반환타입을 void로 설정한다.

예 : 두 수를 더하는 함수에서 반환값은 두 수의 합이고, 반환타입은 정수

 

함수 정의하기

반환타입 함수명 (매게 변수들){

     구현;

     return 값;//반환타입이 있는 경우

}

 

  • 매개변수는 없을 수 있다.

매개변수가 2개인 경우 자료형 변수명1, 자료형 변수명2로 선언해야 한다.

  • 타입이 같아도 각각 선언한다.

반환타입은 자료형을 쓴다.

반환타입이 없는 void인 경우에도 return 예약어를 이용하여 중간에 종료할 수 있다.

 

함수 호출 하기

함수의 리턴값이 있는 경우

변수 = 함수명(값1,...);

 

함수의 리턴값이 없는 경우

함수명(값1,...);

 

함수 호출 스택과 메모리

함수 호출 스택이란 메모리가 있음

함수가 호출 될때마다 스택에 추가됨.

호출이 완료되면 스택에서 제거

스택 : 위에서 추가되고 위에서 빠짐.(자료구조의 일종)

 

함수의 장점

기능을 나누어 코드를 효율적으로 구현

재사용이 가능한 함수는 코드의 길이를 줄여줌

유지 보수가 쉬움

 

메서드

함수가 기능이라면 메서드는 객체에 있는 기능

자바에 나오는 모든 기능은 메서드

함수는 필요한 정보를 모두 매개변수로 전달

메서드는 클래스의 기능이기 때문에 일부 정보는 클래스의 멤버 변수로 가져올 수 있음.

 

가변 매개변수

  • 매개변수의 개수가 미정인 경우.
  • …을 이용
  • 같은 자료형인 경우 사용
  • 가변 매개변수는 배열이 됨.

int sum(int a, int b){}

int sum(int a, int b, int c){}

  • 위처럼 여러 정수를 더하기 위해 계속 메서드 오버라이딩하는것보다 다음처럼 작성하면 개수의 제한이 사라짐.