배운 내용
- 접근제어자
- 예외(Exception)
- 학생관리프로그램 예제
어제는 ‘전화번호부'를 만들며 객체지향과 생성자를 이해하였다. 오늘은 추가적으로 ‘성적관리' 예제를 통하여 접근제어자까지 추가하여 학습하였다. 먼저 접근제어자에 대한 사항을 먼저 공부하고 예제로 넘어가도록 하자.
1. 접근제어자
접근제어자는?
말 그대로 접근을 제어하는 것을 말한다.
- Class, 메소드, 변수에 접근제어자를 붙여 사용하지만 대부분은 변수에 사용된다.
- 종류는 총 3가지이다.
- private : 클래스 내에서만 접근이 가능하며 가장 접근이 엄격하다.
- default : 같은 패키지 안에서 접근이 가능하다.
- protected : 같은 패키지 안에서 상속관계에 있다.
- public : 누구나 접근이 가능하다.
2. 예외(Exception)
익셉션은?
java에서 에러를 지칭하는 용어로 사용된다.
- try문은 익셉션 처리에 사용되는 명령문으로 적극적으로 오류를 처리하고 가장 자주 사용하는 방법이다.
- throw문은 동일한 명령문이며 소극적으로 오류를 처리한다.
특징은 임의적으로 예외를 발생시키고 throws를 통해 오류를 회피한다. - 익셉션은 중괄호 안에 모든걸 선언한다.
예제를 보며 학습해보자.
- 먼저 try문 내에 1, 2를 catch는 3 finally는 4, 5를 출력하려고 한다.
- try문에선 1은 특이사항이 없으니 바로 출력이 될 것이고 다음줄 a는 10/0이 선언되어있다.
- 이 선언은 나누기가 불가하다. 때문에 밑의 2는 출력이 되지 않고 예외가 발생하여 catch문으로 바로 이동하여 3을 출력하고 e.printStackTrace();를 선언하여준다. 이 때 catch문엔 Exception e 를 함께 선언해주어야한다.
- 다음 finally문에선 예외를 해결하였으니 무리없이 4, 5가 실행이 된다.
- 만약 여기서 10/1처럼 예외가 없다면 catch문은 출력되지 않고 1, 2, 4, 5가 출력된다.
- a와 b를 add메소드의 파라미터 값으로 선언하고 a-b를 선언, if문을 이용해 0보다 sum이 작다면 음수는 싫다고 출력이 된다.
- 이 때 throws Exception을 통하여 에러를 회피하여준다.
- main메소드에 try문을 사용하여 a=10, b=20으로 음수가 나올 때 catch문으로 이동하여 음수는 싫다고 출력이 된다.
성적관리 프로그램을 예제로 들어 학습해보자
- student클래스를 생성하여 학생 이름, 과목을 변수로 선언
- default 생성자를 생성
- 생성자로 name을 생성하고 과목에 해당되는 객체를 생성
- 접근제어자의 setter, getter 생성
- 키보드로 입력받기 위해 Scanner 사용
- Manager클래스를 m1객체로 생성
- 반복을 위해 while(true)와 switch문을 사용하여 선택 시 실행될 수 있도록 생성
- studentNum 변수를 통해 변하는 학생에 대응할 수 있도록 생성
- 학생의 이름, 점수를 배열로 관리하기 위해 students로 10개의 배열을 생성
- 접근제어자로 인한 setter, getter 생성
- add메소드는 배열을 사용하여 학생이 추가될 때마다 studentNum을 이용하여 배열에 추가
- search메소드는 index를 -1로 설정하여 이름이 같다면 i = index가 되어 출력이 되고 그렇지 않다면 출력되지 않는다.
- allPrint메소드는 배열 내의 모든 학생을 출력하는데 10까지의 배열이 있을 때 이하의 학생이 있다면 nullPointerException이 출력되기 때문에 새로운 배열을 생성하여 현재 학생 수 만큼 studentNum으로 생성하여 출력한다.
- rank메소드는 내림차순으로 정렬한다면 동일하게 학생 수와 배열이 맞아야하므로 배열을 새로 생성하고 주소값 배열 0부터 학생 수 까지 비교해야 하기 때문에 2중 for문을 사용한다. 0,1 0,2 0,3 1,2 1,3….. 이런식으로 밀어내서 큰 값이 앞자리와 교대하여 정렬할 수 있도록 하였다.
'KOSTA' 카테고리의 다른 글
KOSTA 교육 (객체지향, reference 타입, instanceof 연산자, 추상메소드 , 인스턴스) (0) | 2021.02.22 |
---|---|
KOSTA 교육 (정적 필드, 정적 메소드, 정적 초기화, 상수 필드, final, 오버로딩, 오버라이딩, 상속) (0) | 2021.02.19 |
KOSTA 교육 (객체지향 , 생성자, 배열) (0) | 2021.02.18 |
KOSTA 교육 (객체지향, 생성자) (0) | 2021.02.16 |
KOSTA 일차(배열, 정렬) (0) | 2021.02.10 |