본문 바로가기
정보처리기사/필기

[정보처리기사] Part04-02-3. 라이브러리 활용

by 채연2 2022. 2. 16.

라이브러리

☞ 모듈화 되어 제공되는 프로그램

☞ 효율적인 프로그램 개발 위해 필요한 프로그램 모아놓은 집합체

 

    ▶ 구성

        ▷ 도움말

            → 라이브러리 사용할 수 있도록 하는 도움말 문서

        ▷ 설치 파일

            → 라이브러리 적용 위해 제공되는 설치 파일

        ▷ 샘플 코드

            → 라이브러리 이해하고 손쉽게 적용 위해 제공되는 샘플 소스코드

 

    1. 표준 라이브러리와 외부 라이브러리

        ▷ 표준 라이브러리

            → 프로그래밍 언어가 기본적으로 가지고 있는 라이브러리 의미

            → 여러 종류의 모듈과 패키지 가지며, 별도의 파일 설치 없이 다양한 기능 이용 가능

        ▷ 외부 라이브러리

            → 표준 라이브러리와 달리 별도 파일 설치해야 함

            → 누구나 개발하여 설치 가능하며, 인터넷 등을 이용하여 공유 가능

 

    2. 모듈과 패키지

        ▷ 모듈

            → 한 개의 파일에서 기능 제공

        ▷ 패키지

            → 여러 개 모듈을 한 개의 폴더에 묶어서 기능 제공

            → 패키지 명과 모듈 명을 import하여 불러올 수 있음

 

    ▶ C 표준 라이브러리

        ▷ stdio.h

            → 핵심 입력과 출력 함수들 정의

        ▷ string.h

            → 문자열 처리 함수들 정의

        ▷ math.h

            → 일반적인 수학 함수들 정의

        ▷ stdlib.h

            → 동적 할당 관련 함수, 난수 생성 함수, 정수의 연산 함수, 검색 및 정렬 함수 등 여러 함수 포함

 

    ▶ 파이썬 외부 라이브러리

        ▷ 넘파이(NumPy)

            → 행렬이나 일반적으로 대규모 다차원 배열 쉽게 처리 가능토록 지원하는 라이브러리

        ▷ 판다스 (Pandas)

            → 데이터 분석 위해 널리 사용되는 라이브러리 패키지

        ▷ 필로우(Pllow)

            → 이미지 편집 위한 대표적 라이브러리

        ▷ 텐서플로우(Tensorflow)

            → 기계 학습과 딥러닝 위해 구글에서 만든 오픈소스 라이브러리로 C++도 지원

 

    ▶ 파이썬의 자주 사용되는 라이브러리 기능

        ▷ 문자열 연산 기능

            → 일반적인 문자열 조작 수행하며, 파이썬의 경우 string 모듈 사용

        ▷ 문자열 탐색/치환 기능

            → 문자열 패턴 정의하여 탐색, 치환 등 작업에 사용하며, 정규식 사용을 위한 RE 모듈 사용

        ▷ 수치 계산 기능

            → 기본적 수치 계산 하고자 하는 경우 functions, math 모듈 사용

        ▷ 난수 생성 기능

            → 난수 다루는 작업에 사용하며, random 모듈 사용

        ▷ 파일 경로 조작 기능

            → 파일 경로 관련 기능 제공하며 os.path 모듈 사용

        ▷ 디렉터리 생성 기능

            → 디렉터리 생성 기능 제공하며 tempfile 모듈 사용

        ▷ 날짜 조작 기능

            → 날짜와 시간 일자와 관련 작업 하고자 하는 경우 datetime 모듈 사용

        ▷ 로그 출력 기능

            → 로그 출력 기능 제공하며 logging 모듈 사용

 

    ▶ 자바 기본 라이브러리

        ▷ java.lang

            → 자바 언어 주요 구성요소와 관련된 패키지

        ▷ java.util

            → 다양한 자료구조를 동일한 방법으로 처리 가능토록 하는 라이브러리

        ▷ java.io, java.niom java.net

            → 키보드, 네트워크, 파일 등 입출력 관련 주요 기능 제공하는 라이브러리

        ▷ java.sql

            → DB 프로그래밍 관련 라이브러리

 


예외 처리

☞ 일반적인 실행의 흐름을 바꾸는 몇 가지 조건 처리하도록 설계한 프로그래밍 언어 개념이나 컴퓨터 하드웨어 구조

☞ 프로그램이 처리되는 동안 특정 문제 발생 시 처리 중단하고 다른 처리를 하는 것

 

    ▶ 원인

        ▷ 컴퓨터 하드웨어 문제

            → 설계 오류나 설정 실수로 예기치 못한 결과 도출

        ▷ 운영 체제 설정 실수

            → 운영 체제 설치 후 설정 시 파라미터 값 오류로 발생

        ▷ 라이브러리 손상

            → 구 버전의 라이브러리 또는 일부 설치 등 손상된 라이브러리 사용으로 예외 발생

        ▷ 사용자 입력 실수

            → 존재하지 않는 파일 이름 입력, 숫자 값, 입력 칸에 일반 문자 입력 등으로 발생

 

    ▶ 예외 안전성

        ▷ 완전 보장

            → 예외가 없음 (int b=0;)

        ▷ 강력 보장

            → 예외 발생해도 해결하면 객체 계속 사용 가능하며 예외 발생 전 상태 유지

        ▷ 기본 보장

            → 예외 발생해도 해결하면 메모리 누수 등 자원 누수 없으나, 객체 상태 알 수 없음

 

    ▶ 예외 원인 별 안전성 수준

        1. 예외 보증을 하지 않는 안전 (No exception safety)

        2. 최소 예외 안전 (No-leak guarantee)

        3. 기본 예외 안전 (Basic exception safety)

        4. 강력한 불변의 예외 안전 (Commit or rollback semantics)

        5. 실패 투명성 (No throw guarantee)

 

    ▶ 사례

        1. 예외 처리 문법

            ㄱ. 자바 사례

try {
    throw new Exception();
} catch (Exception e) {
    //Exception 발생 시 처리할 코드
} finally {
    //마지막으로 항상 처리할 코드
}

            ㄴ 파이썬 사례

f = None
try:
    f = file("inputNo")
    f.write()
except IOError:
    print "file open error"
except: #모든 exception 처리
    print "error"
else:   #exception 발생하지 않을 때 수행
    print "정상적으로 처리"
finally: #항상 처리 될 코드
    if f:
        f.close()

            ㄷ C++ 사례

#include <exception>
int main() {
    try {
        //일반적 수행 코드
    } catch (const std::exception& e) {
        //exception 발생 시 처리 코드
    }
}

 


프로토타입

☞ 요구사항 검증 위해 본격적인 개발에 앞서 시제품 형태로 제작되는 원형

☞ 프로토타입 작성 시 라이브러리 활용성 검증하고 원하는 기능에 대한 구현 여부 검토 가능

 

    ▶ 라이브러리 활용한 프로토 타입

        → 프로토타입 제작 시 라이브러리 활용하면 단시간에 원하는 기능 구현 가능

        → 라이브러리 검색, 선택, 설치, 적용하고 코드 검토하여 프로토타입 작성

        → 예상 결과와 다른 경우 다른 라이브러리 활용하여 위 단계 반복

 

    ▶ 프로토타입 기반 프로그래밍

        → 객체 지향 프로그래밍의 한 형태

        → 클래스 기반 언어에서 상속 사용하는 것과 달리, 객체 프로토타입 제작하여 복제 과정 통해 객체 동작 방식 재사용 가능

        → 클래스리스(class-less), 프로토타입 지향(prototype-oriented), 인스턴스 기반(Instance-based)

function Car()
Car.prototype.handle = 1;
Car.prototype.wheel = 4;
var motorCar = new Car()
console.log(motorcar.wheel); //4

//Car.prototype 빈 객체 생성하고 Car()라는 함수로부터 생성된 객체들은 해당 Car.prototype 값 재사용 가능
320x100

댓글