오늘의 공부 : 정보처리기사 및. 4주차 1~3
오늘도 내가 강의를 들으면서 새롭게 알게된 것 그 동안 애매했던 것을 오늘의 학습으로 정리하려고 한다.
오늘의 학습 / 정보처리이론 정리 이렇게 나누어서 정리.. 오늘은 빨리 정처기 공부 더해야되서..
크기 변형 없이.. 빠르게 작성목표!
💡 오늘의 학습 키워드
제네릭
예외처리
제네릭 (Generics) 이란?
자바에서 제네릭(Generics)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. 객체별로 다 타입의 자료가 저장될 수 있도록 한다.
자바에서 배열과 함께 자주 쓰이는 자료형이 리스트(List)인데, 다음과 같이 클래스 선언 문법에 꺾쇠 괄호 <> 로 되어있는 코드 형태를 한번 쯤은 봤을 것이다.
javaArrayList<String> list = new ArrayList<>();Copy
저 꺾쇠 괄호가 바로 제네릭이다. 괄호 안에는 타입명을 기재한다. 그러면 저 리스트 클래스 자료형의 타입은 String 타입으로 지정되어 문자열 데이터만 리스트에 적재할 수 있게 된다.
아래 그림과 같이 배열과 리스트의 선언문 형태를 비교해보면 이해하기 쉬울 것이다. 선언하는 키워드나 문법 순서가 다를뿐, 결국 자료형명을 선언하고 자료형의 타입을 지정한다는 점은 같다고 볼 수 있다.
이처럼 제네릭은 배열의 타입을 지정하듯이 리스트 자료형 같은 컬렉션 클래스나 메소드에서 사용할 내부 데이터 타입(type)을 파라미터(parameter) 주듯이 외부에서 지정하는 이른바 타입을 변수화 한 기능이라고 이해하면 된다.
주의할 점은 제네릭은 반드사 참조 타입을 할당해야 한다는것,. 자바 원시 타입은 넘겨줄 수 없다...
그래서 wrapper 클래스가 존재하는 듯
예외 처리
오류: 일반적으로 회복이 불가/한경적인 이유
예외 회복이 가능한 문제
checked 예외 처리 확인된
unchecked 미확인
예외 처리 하는 법
try / catch / finally/ throw
//예외 클래스를 마들어서 클래스 정리하기
throws (예외를 던지다)
thorows/ throw 차이!!
throw로 던지기 전에 미리 throws를 써줘야 함!!
class OurBadException extends Exception {
public OurBadException() {
super("위험한 행동을 하면 예외처리를 꼭 해야합니다!");
}
}
class OurClass {
private final Boolean just = true;
// 신규 문법 throws!
public void thisMethodIsDangerous() throws OurBadException {
if (just) {
// 신규 문법 throw!
throw new OurBadException();
}
}
}
throws 입력된 메소드 부르면 빨간색 뜸, 이럴 경우 try catch로 싸준다
throws
메서드 이름 뒤에 붙어 이 메서드가 어떠한 예외사항을 던질 수 있는지 알려주는 예약어입니다.
메서드 안에서, 실제로 예외 객체를 던질 때 사용하는 예약어입니다.
여러 종류의 예외사항을 적을 수 있습니다.
throw
실제로 던지는 예외 객체 하나와 같이 써야 합니다.
일반 메서드의 return 키워드처럼 throw 아래의 구문들은 실행되지 않고, throw문과 함께 메서드가 종료됩니다.
public class StudyException {
public static void main(String[] args) {
OurClass ourClass = new OurClass();
try {
// 1. 위험한 메소드의 실행을 "시도" 해 봅니다.
// "시도" 해보는 코드가 들어가는 블럭입니다.
ourClass.thisMethodIsDangerous();
} catch (OurBadException e) {
// 2. 예외가 발생하면, "잡아서" handling 합니다.
// 예외가 발생하는경우 "handling" 하는 코드가 들어가는 블럭입니다.
// 즉 try 블럭 내의 구문을 실행하다가 예외가 발생하면
// 예외가 발생한 줄에서 바로 코드 실행을 멈추고
// 여기 있는 catch 블럭 내의 코드가 실행됩니다.
System.out.println(e.getMessage());
} finally {
// 3. 예외의 발생 여부와 상관없이, 실행시켜야 하는 코드가 들어갑니다.
// 무조건 실행되는 코드가 들어가는 블럭입니다.
System.out.println("우리는 방금 예외를 handling 했습니다!");
}
}
}
가장 추상적인 문제
좀더 구체적으로 오류/예외
예외는 더 checked Exception(우리가 미리 확인한것), Unchecked Exception
추상화라는 개념 오류와 예외에도 중요
사람이 다 정해서 할 수 가 없음
자바의 THrowable Class
시작은 모든 객체의 원형인 Object
문제상황을 뜻하는 Throwable 이 안에 Erro와 예외 Exception
에러 클래스와 예외 클래스는 각각 IOError 클래스, RuntimeException 클래스오 같이 구분해서 사용
//그림 예외처리 자바 노트
많이 보는ㄴ거 NullPointException
ArrayIndexOutofBoundss Exception
chained Exception 실제 예외 처리
연결된 예외(예외는 다른 예외를 유발할 수있다.
예외 A가 예외 B를 발생했다면 예외 A는 B의 원인
여기서부터 정보처리가 정리
1.소프트웨어 생명주기,SDLC
1) 폭포수 모형(Watalfall model) : 고전적 생명 주기 모형/ 선형 순차적 모형 / 중간에 못 바꿈
2) 프로토 타임 모형 Prototype Model: 견본 만들어서 결과물 에측
3) 나선형 Spiral Model 폭포수 모형 + 프로토타입 + 분석기능
4) 에자일 모형 : 변화에 유용하게 대처
ex) XP(eXtreme Programing), 스크럼(Scrum), 칸반ㄴ(Kanban), 크리스탈(Crystal), 린(LEAN)
ㄱ) 스크럼 기법 : 팀원 스스로 스크럼 팀 구성 / 2~4주 정도 기간 진행
- 제품 책임자: 백로그 주체 / 스크럼 마스터 : 회의주간 / 개발팀 : 나머지 팀원 총 7~8 작음
ㄴ)XP 기업
- 핵심가치 : 용기 / 단순성/ 읫사ㅗ통/ 피드백 / 존중
-기본 원리 : Whole Team(전체팀), Small Release(소규모 릴리즈) / Test-Driven Development(테스트 주도 개발)
Continuous Integration(계속적인 통합) Collective Ownership(공동 소유권), Pair Programming ( 짝 프로그래밍)
Design Improvement(디장인 개선) Refactioroing(리팩토링)
요구사항 정의 : 1) 기능 요구사항 : 기능, 입력, 출력 저장 수행 등
2) 비기능 요구사항 : 성능, 품질, 제약사항, 호한성 보안 등..
UML 더 있는데..
나머진 내일! 복습하면서 정리!