정보처리기사

[정보처리기사 요약 10-2] Java 클래스 상속과 예외 처리, Python 문법 정리

Hong's_Computer 2026. 3. 2. 15:01
반응형
본문에 오류가 있을 수 있음을 감안하고 봐주시길 바랍니다.
# 문제 풀이 중 오답노트 하면서 나온 내용을 정리한 것

 

Java 클래스: 객체 생성을 위한 필드(속성)와 메서드(함수)를 정의하는 설계도로 Java는 아무리 작은 프로그램이라도 클래스를 만들어서 사용해야 한다.

class ClassA {   // ClassA를 정의함
    ClassA() {
        System.out.print('A');   // ①
        this.prn();   // ②
    }
    void prn() {
        System.out.print('B');
    }
}
class ClassB extends ClassA {   // 상속 (Inheritance): extends 키워드를 사용하여 부모 클래스의 속성과 메서드를 자식 클래스가 물려받는다.
    ClassB() {
        super();   // 상속한 부모 클래스 가리키는 예약어, ①
        System.out.print('D');   // ③
    }
    void prn() {
        System.out.print('E');   // ②
    }
    void prn(int x) {
        System.out.print(x);   // ④
    }
}
public class test {
    public static void main(String[] args) {
        int x = 7;
        ClassB cal = new ClassB();   // 생성자(객체 변수를 생성하면서 초기화를 수행함)
        cal.prn(x);   // cal이라는 ClassB안의 prn을 수행함, AED7
    }
}

        - X == Y일 때, X와 Y가 String이라면 동일한 주소를 의미함

        - X.equals(Y), X와 Y의 문자열만 비교해서 True or False 출력

 

추상 메서드: 부모 클래스에서 선언만 하고 자식 클래스에서 반드시 재정의(Overriding)하여 사용해야 하는 메서드다.

abstract class Animal {   // 추상 클래스 Animal을 정의함
    String a = " is animal";
    abstract void look();
    void show() {
        System.out.println("Zoo");   // ③
    }
}
class Chinken extends Animal {
    Chicken() {
        look();   // ①
    } void look() {   // ②
        System.out.println("Chicken" + a);
    } void display() {
        System.out.println("two wings");
    }
}
public class test {
    public static void main(String[] args) {
        Animal a = new Chicken();   // Chicken 클래스의 생성자를 이용해 Animal 클래스의 객체 변수 a를 선언함, Chicken is animal 출력
        a.show();   // Zoo 출력
    }
}

 

 

예외처리: 예외가 발생했을 때 프로그래머가 해당 문제에 대비해 작성해 놓은 처리 루틴이 수행되도록 하는 것이다. 일반적인 처리 루틴은 프로그램을 종료시키거나 로그(Log)를 남기는 것이다. # 문법 오류로 인해 발생한 것은 코드가 실행조차 안되서 예외 처리 안됨

  • 예외 원인: 컴퓨터 하드웨어 문제, 운영체제의 설정 실수, 라이브러리 손상, 사용자의 입력 실수, 받아들일 수 없는 연산, 할당하지 못하는 기억장치 접근
  • Java의 예외 처리: 자바는 예외를 객체로 취급하며 예외와 관련된 클래스를 java.lang 패키지에서 제공한다. try ~ catch 문을 이용해 예외처리를 수행한다.
try {
    예외가 발생할 가능성이 있는 코드;
} catch(예외처리1 매개변수) {
   예외처리1에 해당하는 예외발생 시 처리 코드;
}
...
finally {
    예외의 발생 여부와 관계없이 무조건 처리되는 코드;
}
  • Java의 주요 예외 처리
예외 객체 발생 원인
ClassNotFoundException 클래스를 찾지 못한 경우
NoSuchMethodException 메소드를 찾지 못한 경우
FileNotFoundException 파일을 찾지 못한 경우
InterruptedIOException 입·출력 처리가 중단된 경우
ArithmeticException 0으로 나누는 등의 산술 연산에 대한 예외가 발생한 경우
IllegalArgumentException 잘못된 인자를 전달한 경우
NumberFormatException 숫자 형식으로 변환할 수 없는 문자열을 숫자 형식으로 변환한 경우
ArrayIndexOutOfBoundsException 배열의 범위를 벗어난 접근을 시도한 경우
NegativeArraySizeException 0보다 작은 값으로 배열의 크기를 지정한 경우
NullPointerException 존재하지 않는 객체를 참조한 경우

 

 

Garbage Collector: JAVA에서 힙(Heap)에 남아있으나 변수가 가지고 있던 참조값을 잃거나 변수 자체가 없어짐으로써 더 이상 사용되지 않는 객체를 제거해주는 역할을 하는 모듈

 

 

Python: 귀도 반 로섬(Guido van Rossum)이 발표한 언어, 인터프리터 방식, 객체지향 기능을 지원하는 스크립트 언어로 다른 언어에 비해 문법이 간단하다(배우기 쉽다)는 장점 및 이식성이 좋은 특징이 있다. 변수의 자료형에 대한 선언이 없고 문장의 끝을 의미하는 세미콜론(;)을 사용할 필요가 없다. 코드 블록을 의미하는 중괄호({ }) 대신 콜론(:)과 여백으로 구분한다.

  • 리스트 자료형 관련 주요 메서드
형식 내용
pop(위치) 리스트에서 '위치'에 있는 값을 출력하고 해당 요소를 삭제한다.
index(값) 리스트에서 '값'이 지정된 요소의 위치를 반환한다.
count(값) 리스트에서 '값'이 저장되어 있는 요소들의 개수를 반환한다.
extend(리스트) 리스트의 끝에 새로운 '리스트'를 추가하여 확장한다.
reverse() 리스트의 순서를 역순으로 뒤집는다.
sort() 리스트를 정렬하면 기본값은 오름차순이다.
sort(reverse=True) → 내림차순, sort(reverse=False) → 오름차순
append(값) 리스트의 맨 마지막에 새로운 요소를 하나 추가합니다.
insert(위치, 값)
리스트의 지정한 '위치'에 특정 '값'을 삽입합니다.
remove(값) 리스트에서 첫 번째로 나오는 특정 '값'을 찾아서 삭제합니다.
  • 세트 자료형 관련 주요 메서드( { ~ }, ~안에 중복값은 없다)
형식 내용
pop() 세트의 값을 출력하고 요소를 삭제한다.
add(값) 세트에 '값'을 추가한다.
update(세트) 세트에 새로운 '세트'를 추가하여 확장한다.
remove(값) 세트에서 '값'을 찾아 해당 요소를 삭제한다.
  • 슬라이스(Slice): 문자열이나 리스트와 같은 순차형 객체에서 일부를 잘라 반환하는 기능이다.
형식
- 객체명[초기위치:최종위치]   # 초기부터 최종위치 -1 까지 +1
- 객체명[초기위치:최종위치:증가값]   # 초기위치에서 최종위치-1까지 +증가값

생략
- 객체명[:] 또는 객체명[::]   # 전부
- 객체명[초기위치:]   # 초기 위치부터 끝까지
- 객체명[:최종위치]   # 처음부터 최종위치까지
- 객체명[::증가값]   # 처음부터 끝까지 +증가값
  • Range: 연속된 숫자를 생성하는 것으로 리스트나 반복문에서 많이 사용된다.
range(최종값)   # 0~(최종값-1)
range(초기값, 최종값)   # 초기값~(최종값-1)
range(초기값, 최종값, 증가값) #초기값 ~ (최종값-1)까지 +증가값
  • 람다식: 어떤 문제를 해결하기 위한 과정을 수학식으로 표현한 것, 프로그래밍 언어에서 람다식은 수학적 연산을 수행하는 함수나 메서드를 간소화할 때 사용한다.
lambda 변수명 : 수학식

 

 

Python 데이터 타입

  • 복소수(Complex) 타입: 복소수 형태의 값을 저장하기 위한 자료형
  • 리스트(List) 타입: 여러 요소를 저장하는 자료형으로 대괄호[]를 이용하여 각 요소에 접근함
  • 사전(Dict) 타입: 키(Key)와 값(Value)의 쌍으로 연겨로딘 요솔들로 이루어진 자료형
  • 튜플(Tuple) 타입: 시퀀스(Sequence) 데이터 타입에 해당하며 다양한 데이터 타입들을 주어진 순서에 따라 저장할 수 있으나 저장된 내용을 변경할 수 없는 자료형

 

 

순차 파일: 레코드들이 순차적으로 처리되므로 대화식 처리보다 일괄 처리에 적합하다. 연속석적인 레코드이 저장에 의해 레코드 사이에 빈 공간이 존재하지 않으므로 기억 장치의 효율적인 이용이 가능하다. 매체 변환이 쉬워 어떠한 매체에도 적용할 수 있다. 필요한 레코드를 삽입, 삭제, 수정하는 경우 파일을 재구성해야 하므로 파일 전체를 복사해야 한다. SASD(Sequential Access Storage Device)를 사용하여 원하는 레코드에 접근하기 위해 처음부터 순서대로 접근한다.

반응형