본문 바로가기

반응형

분류 전체보기

우아한테크코스 6기 프리코스 2주차 1. 1주차 공통 피드백 해당 피드백 중 나에게 의미 있었던 것들만 언급하겠다. 1) 커밋 메시지를 의미 있게 작성하라 1주차에서는 커밋 메시지를 작성할 때 그냥 생각나는대로 커밋 메시지를 작성했는데 사실 적으면서도 맞게 하는 건지에 대한 의문이 생겼다. 1주차 공통 피드백에는 "커밋 메시지에 해당 커밋에서 작업한 내용에 대한 이해가 가능하도록 작성한다." 이렇게만 적혀있었는데 그래서 어떻게 작성하는 거지라는 생각이 들었다. 일단은 피드백을 읽고 과제 진행 요구 사항을 읽던 중 새롭게 추가된 내용이 눈에 들어왔다. [그림 1-1] 커밋 메시지 컨벤션 예시부터 봤는데 맙소사 생각보다 엄청 길게 메시지를 작성해야 하는 건가라는 생각부터 들었다. 일단 커밋 메시지도 형식이 따로 있구나 정도로만 생각하고 숫자 .. 더보기
Chpt 8. 예외 - 주제 3. 연결된 예외 예외 A가 예외 B를 발생시켰다면 예외 A는 예외 B의 원인 예외다. 1. 예외 연결 방법 예외를 연결하는 방법에는 두 가지가 있다. 1) Throwable 클래스의 initCause 메서드 사용 다음 상속 계층도를 참고하면 모든 Exception의 최고 조상은 Throwable이기 때문에 Throwable 클래스의 initCause 메서드 사용하면 예외를 연결할 수 있다. [예 1] try { startInstall(); copyFiles(); } catch (SpaceException se) InstallException ie = new InstallException("설치 중 예외 발생"); ie.initCause(se); throw ie; } catch (MemoryException me { .... 더보기
Chpt 8. 예외 - 주제 2. 예외의 처리 1. 인위적 예외 발생 프로그래머가 고의로 예외를 발생시킬 때는 다음과 같이 한다. 참고로 모든 예외 발생은 인스턴스를 생성한다. throw new Exception("의도적으로 발생시킨 예외"); 2. 예외 처리의 정의와 목적 예외 처리 정의: 예외 발생에 대비한 코드 작성 예외 처리 목적: 프로그램의 비정상적 종료 방지 3. 예외 처리 방법 예외를 처리하는 네 가지 방법이 존재한다. 1) try-catch문 (직접 처리) try 블럭에서 예외가 발생 (예외 인스턴스 생성) (1) 하지 않을 경우, try 블럭만 실행된다. (2) 할 경우, 곧바로 catch 블럭 그룹으로 넘어간다. (2-1) 생성된 예외 클래스의 인스턴스 instanceof 괄호 안 예외 타입이 (2-1-1) true면 해당 블럭 안.. 더보기
Chpt 8. 예외 - 주제 1. 프로그램 오류의 종류 어떠한 이유로 프로그램이 오동작하거나 종료되기도 한다. 이러한 이유를 바로 프로그램 오류라고 한다. 프로그램 오류에는 다음과 같은 종류가 있다. 모든 런타임 에러는 클래스이며 다음과 같은 상속 계층도를 갖는다. [참고 1] 사용자 정의 예외 클래스 다음과 같은 방법으로 사용자 정의 예외 클래스를 만들 수도 있다. (1) 상속 받을 예외 클래스를 extends 키워드를 통해 상속 받는다. (2) 예외 클래스의 생성자 안에 생성자 super를 추가해 예외 메시지를 설정할 수 있게 만든다. 참고로 선택적 처리가 가능한 RuntimeException 예외 클래스를 주로 상속 받는다. 오류의 분류 기준에는 네 가지가 있다. 1. 오류 발생 시점 오류 발생 시점에 따라 컴파일 도중에 발생하는 컴파일 에러, 실행 도.. 더보기
Chpt 7. 객체 지향 프로그래밍 2 - 주제 6. 내부 클래스 1. 내부 클래스 내부 클래스는 외부 클래스 안에 선언된 클래스이다. 외부 내부 클래스 간의 멤버 접근이 용이하고 클래스를 감춤으로서 캡슐화를 실현시킬 수 있다는 장점이 있다. 내부 클래스에는 인스턴스, static, 지역 내부 클래스 그리고 예외로 익명 내부 클래스가 있다. 내부 클래스도 클래스 안에 선언될 수 있는 모든 변수의 특징과 같은 특징을 공유한다. class Outer { class InstanceInner {} // 인스턴스 내부 클래스 static class StaticInner {} // static 내부 클래스 void myMethod() { class LocalInner {} // 지역 내부 클래스 } } 1) 내부 클래스의 특징 내부 클래스의 특징을 알아보자. (1) static .. 더보기
Chpt 7. 객체 지향 프로그래밍 2 - 주제 5. 추상클래스와 인터페이스 1. 추상메서드 추상메서드는 구현부 없이 선언부만 존재하는 메서드이다. 다음과 같은 방식으로 사용한다. abstract 리턴 타입 메서드 이름(); 2. 추상클래스 추상 클래스는 추상 메서드를 포함하고 있는 클래스이다. 다음과 같은 방식으로 사용한다. abstract class 클래스 이름 {} 추상 클래스와 추상 메서드에는 다음과 같은 특징이 있다. (1) 추상 메서드를 단 하나라도 포함하고 있으면 추상 클래스이다 (2) 추상 클래스는 상속을 통해 자손 클래스로 구현을 완료한 다음, 인스턴스를 생성할 수 있다. (3) 자손 클래스의 메서드 중에 단 하나라도 구현이 되지 않은 추상 메서드가 있다면 그 자손 역시 추상클래스이다. (4) 추상 타입 참조변수 = 구현 완료한 자손 타입의 인스턴스 (5) 추상 .. 더보기
Chpt 7. 객체 지향 프로그래밍 2 - 주제 4. 다형성의 장점 2가지 1. 다형성 다형성이란 조상 타입의 참조 변수로 자손 타입의 인스턴스를 참조할 수 있다는 것이다. (1) 조상 타입 참조 변수 = 자손 타입 인스턴스 (2) 자손 타입 참조 변수 ≠ 조상 타입 인스턴스 앞서 참조 변수의 타입과 참조하는 인스턴스의 타입은 같다고 했지만 다형성을 이용하면 위와 같이 참조할 수도 있다. (2)와 같은 반대의 경우는 불가능하다. 참조 변수의 타입과 참조하는 인스턴스의 타입이 같은 경우랑 비교할 때, (1)에서는 참조할 수 있는 멤버의 개수가 줄어든다. 참조 변수가 사용할 수 있는 멤버의 개수 캐스트 연산자 생략 가능 (자손 → 조상) 7번째 줄: 사용 가능한 멤버 수 4 → 5개 (안전 X) => 캐스트 연산자 생략 불가 (조상 → 자손) [참고 2] class Car {} c.. 더보기
Chpt 7. 객체 지향 프로그래밍 2 - 주제 3. 제어자 1. 제어자 제어자는 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 더해주는 형용사와 같다고 생각하면 된다. 제어자에는 다음과 같은 종류가 있다. 접근 제어자 public, protected, (default), private 그 외 static, final, abstract, ... 1) 그 외 (1) static - 클래스의, 공통적인 사용 인스턴스 생성 여부 인스턴스 멤버 사용 가능 여부 참조 변수 this 사용 가능 여부 static (멤버) 변수 (cv) X X X static (멤버) 메서드 (cm) X X X static 초기화 블럭 (복잡 초기화) X X X 3, 4열은 모두 2열과 관련 있음을 알아두자. (2) final - 마지막의, 변경될 수 없는 대상 의미 클래스 상속 .. 더보기

반응형