오버로딩과 오버라이딩은 객체지향 프로그래밍(OOP)에서 메서드를 다루는 두 가지 중요한 방법이다. 이 두 개념을 제대로 이해하려면 객체지향의 몇 가지 특징을 먼저 짚고 넘어가는 게 도움이 된다.

객체 지향 프로그래밍의 특징

상속 Inheritance

부모 클래스의 멤버를 자식 클래스가 상속받아 사용할 수 있으며, 이를 통해 코드의 재사용성이 높아지고 유지보수도 편리해진다

단, 부모 클래스의 private 멤버는 상속받을 수 없으며, protected 멤버는 자식 클래스에서 접근할 수 있다 상속은 extends 키워드를 사용하여 구현한다.

자식 클래스는 부모 클래스의 메서드나 변수를 그대로 쓸 수도 있고, 필요하면 재정의(오버라이딩)할 수도 있다

오버로딩 vs 오버라이딩

메서드 오버로딩 Method Overloading

같은 이름의 메서드를 매개변수의 개수나 타입을 달리하여 중복 정의하는 것

메서드 이름은 동일하지만, 인자의 개수나 타입이 다르다

이는 컴파일 시간에 결정되며, 코드의 가독성과 유연성을 높여준다.

class Calculator {
    int add(int a, int b) {
        return a + b;
    }

    double add(double a, double b) {
        return a + b;
    }
}

메서드 오버라이딩 Method Overriding

상속 관계에서 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것

부모 메서드와 동일한 이름, 리턴 타입, 매개변수를 가져야 하며, 이를 통해 자식 클래스에서 부모의 동작을 변경할 수 있다

이 동작은 런타임에 결정된다

class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Dog barks");
    }
}

추상클래스와 인터페이스

추상 클래스와 인터페이스는 객체지향 프로그래밍에서 상속과 오버라이딩을 활용할 때 많이 등장하는 개념이다

추상 클래스 Abstract Class

하나 이상의 추상 메서드(구현되지 않은 메서드)를 포함하는 클래스

추상 클래스 자체로는 인스턴스를 만들 수 없다

따라서, 이를 상속받은 자식 클래스에서 모든 추상 메서드를 반드시 오버라이딩(구현)해야 한다

즉, 추상 클래스는 기본 설계도만 제공하고, 세부 구현은 자식 클래스에서 하도록 강제하는 구조다.

인터페이스 Interface

모든 메서드가 추상 메서드인 클래스

인터페이스는 구현체가 없기 때문에 인스턴스를 생성할 수 없으며, 클래스는 extends로 상속하고 인터페이스는 implements를 사용하여 구현한다

클래스는 하나만 상속할 수 있지만, 인터페이스는 여러 개를 구현할 수 있어서 다양한 기능을 한 번에 추가할 때 유용하다. 인터페이스를 구현한 클래스는 반드시 그 안의 모든 메서드를 구현해야 한다

이 두 개념을 이해하면, 오버라이딩이 왜 중요한지 더 쉽게 파악할 수 있다

특히, 추상 클래스나 인터페이스에서 정의된 메서드들을 재정의하는 방식으로 자식 클래스에서 자신만의 기능을 추가하거나 변경할 수 있기 때문이다.

선형구조는 지난 포스팅 참조

자료구조란?

자료의 표현, 연산을 의미한다

 

자료구조 선형구조 리스트 List
스택 Stack
큐 Queue
데큐 (데크)
Deque (Double-ended Queue)
비선형구조 트리 Tree
그래프 Graph

크게 선형구조  비선형 구조로 나뉘며,

세부적으로 선형 구조의 종류에는 리스트, 스택, 큐, 데큐 (데크)

비선형 구조의 종류에는 트리 그래프가 있다

 

트리 Tree

트리구조는 나무의 뿌리처럼 이미지상으로는 아래를 향하지만 가지처럼 뻗어나가는 구조이다

갭탭으로 이미지 그려 수정예정**

차수는 가지수를 의미한다

이미지에서 뿌리 노드 root node 에서 뻗어나온 가지 수는 3

ex) C 의 차수 : 2

차수가 0 인 노드는 단말노드 leaf node 라 한다

왼쪽 라인을 보면 뿌리부터 1,2,3,4...레벨로 깊이를 나타낸다

관계에 따라 부모, 자식, 형제, 조상 노드로 불린다

 

이진트리

갭탭으로 이미지 그려 수정예정**

이미지삽입예정      
정이진 전이진 옳지않은 예이다 왼쪽부터 채워져야 한다 사향이진

 

그래프 Graph

정점 vertex, 간선 edge 의 모음

트리도 그래프라고 볼수 있는데, 다른 점은 사이클이 존재한다

 

그래프의 탐색 방법으로 깊이 우선 탐색 DFS(Depth-First Search)너비 우선 탐색 BFS(Breadth-First Search)이 있다

깊이 우선 탐색 DFS(Depth-First Search) 최대한 깊게 내려간 후 옆을 탐색
너비 우선 탐색 BFS(Breadth-First Search) 최대한 넓게 이동 후 아래로 탐색

 

소프트웨어 비용 산정 방식상향식 방식 중 하나인 원시코드 라인수 기법이다

LOC (Source Line Of Code) 기법 이라고 하며

원시 코드 라인수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구해 비용을 산정한다

 

비관치 : 가장 많이 측정된 라인 수

낙관치 : 가장 적게 측정된 라인 수

기대치 : 측정된 모든 라인 수의 평균

 

[비관치, 낙관치, 기대치] = [b, a, m]

 

예측치 = a + 4m + b / 6

 

원시코드 라인수 기법 산정 공식

노력(인원) = 개발 기간 X 투입 인원 = LOC / 1인당 월평균 생산 코드 라인수

 

개발 비용 = 노력(월) X 단위 비용 (1인당,월)
개발 기간 = 노력(월) / 투입 인원
생산성 = LOC / 노력(월)

 

정보처리기사 공부하면서 용어 정리한 것

  • 데이터베이스 관리 시스템 DBMS : Database Manage System
  • 통합 모델링 언어 UML : Unified Modeling Language
  • 애자일 Agile : 날렵한 , 민첩한 (애자일 프로세스 소프트웨어 개발 방법론)
  • 감성공학(感性工學) : 인체의 특징과 감성을 제품설계에 최대한 반영시키는 기술
    인간이 가지고 있는 소망으로서의 이미지나 감성을 구체적인 제품설계로 실현해내는 공학적인 접근방법
  • 아키텍쳐 Architecture : 컴퓨터 시스템의 하드웨어적 구조
  • 객체 지향 OOP (Object Oreinted Programming) : 프로그램 구현에 필요한 객체를 파악하고 각각의 객체들의 역할이 무엇인지를 정의하여 객체들 간의 상호작용을 통해 프로그램을 만드는 것
  • 요구공학Requirements engineering, RE : 시스템 요구사항 문서를 생성, 검증, 관리하기 위하여 수행되는 구조화된 활동의 집합
  • 인터페이스 interface : 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면
    사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템
    컴퓨팅에서 컴퓨터 시스템끼리 정보를 교환하는 공유 경계
  • 미들웨어 Middleware : 서로 다른 애플리케이션이 서로 통신하는 데 사용되는 소프트웨어
  • 객체 관계 매핑 ORM (Object Relational Mapping) : 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법
    객체 지향 언어에서 사용할 수 있는 "가상" 객체 데이터베이스를 구축하는 방법
  • 트랜잭션 (트랜젝션 X) Transaction : 데이터베이스 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
    한꺼번에 수행되어야 할 일련의 연산들
  • 프로시저 Procedure (저장 프로시저 또는 스토어드 프로시저, 영구저장모듈) : 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
    데이터베이스에 대한 일련의 작업을 정리한 절차를 관계형 데이터베이스 관리 시스템에 저장한 것
  • 디버깅 Debugging : 모든 소프트웨어에서 소스 코드의 오류 또는 버그를 찾아서 수정하는 과정
  • 쿼리 Query : 데이터베이스에 정보를 요청하는 것
  • 인스펙션 Inspection : 코드 리뷰와 같은 개념이다
  • 모듈 Module : 프로그램을 구성하는 구성 요소
    관련 데이터와 함수를 하나로 묶은 단위
  • 통합 개발 환경 IDE (Integrated Development Environment) : 코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어
  • 형상관리 Configuration Management : 구성 관리 또는 형상 관리는 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것
  • 디지털 권리 관리 DRM (Digital Rights Management) : 저작권자가 그들이 배포한 디지털 자료나 하드웨어의 사용을 제어하고 이를 의도한 용도로만 사용하도록 제한하는 데 사용되는 모든 기술들을 지칭
  • 구조적 쿼리 언어 SQL (Structured Query Language) : 관계형 데이터 베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어
  • 트리거 Trigger : 테이블에 대한 이벤트에 반응해 자동으로 실행되는 작업
  • 데이터베이스 생명 주기 관리 DLM : Database Lifecycle Management
  • 데이터 조작 언어 DML : Data Manipulation Language
  • 데이터 제어 언어 DCL : Data Control Language
  • 데이터 정의 언어 DDL : Data Definition Language
  • 서브쿼리 : 하나의 SQL 문 안에 있는 또 하나의 SQL 문
  • 관계대수 : "어떻게 질의를 해석하는가" 에 대해 언급하는 절차적 언어
  • 관계해석 : 원하는 데이터만 명시하고 "어떻게 질의를 해석하는가" 에 대해 언급이 없는 선언적 언어
  • 시스템 카탈로그 System Catalog : 데이터 베이스 관리자 도구
    데이터 베이스에 저장되어 있는 모든 데이터 개체들에 대한 정의나 명세에 대한 정보가 수록되어 있는 시스템 테이블
  • 개체-관계(E-R)모델 Entity Relationship : 개체와 개체간의 관계,속성을 직관적으로 표현
  • 파티셔닝 Partitioning : 데이터 베이스를 여러 부분으로 분할
  • 클러스터링 Clustering : 유사한 성격인 개체들을 묶어 군집화(그룹화)
  • 데이터 무결성 Data Integrity : 데이터의 정확성, 일관성, 유효성이 유지
  • 반정규화 Denomalization : 시스템의 성능 향상과 개발, 운영 단순화를 위해 중복, 통합, 분리를 시도하는 데이터 모델링 기법
  • CRUD : Create Read Update Delete
  • ETL (Extract Transform Load,Extraction Transformation Loading) : 데이터 추출, 변환, 적재
  • API (Application Programming Interface) : 컴퓨터나 컴퓨터 프로그램 사이의 연결, 다른 종류의 소프트웨어에 서비스를 제공
  • 프로토 타입 Prototype : 중요 기능들이 포함되어 있는 시스템의 초기 모델
  • 전송 제어 프로토콜 TCP (Transform Control Protocol) : 두 개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 네트워크 프로토콜
  • 사용자 데이터그램 프로토콜 UDP (User Datagram Protocol) : 비연결형 프로토콜 (TCP 에서 신뢰성을 제외)
  • 테일러링 Tailoring : 주어진 대상에 맞게 줄이거나 늘리는 것
  • 라우터 Router : 컴퓨터 네트워크 간에 데이터 패킷을 전송하는 네트워크 장치
  • 백본 스위치 Backbone Switch : 백본 => 네트워크의 중심, 스위치 => 스위치 역할을 하는 기기
  • 보안 운영체제 Secure OS
  • 네트워크 결합 스토리지 NAS (Network Attached Storage) : LAN 으로 연결하는 외장 하드디스크
  • 직접 연결 저장장치 DAS (Direct Attached Storage) : 서버 또는 컴퓨터에 네트워크를 거치지 않고 직접 연결되는 저장장치
  • 스토리지 에어리어 네트워크 SAN (Storage Area Network) : 서버와 저장장치를 Fiber Channel Switch 로 연결한 고속 데이터 네트워크
  • 안전한 소프트웨어 개발 생명주기 Secure SDLC (Software Development Life Cycle)
  • 스키마 Schema : 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조
  • MVC (Model View Controller) : 소프트웨어 디자인 패턴
  • 배치 프로그램 Batch Program : 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 작업
  • 컴포넌트 기반 방법론 CBD (Component Based Design) : 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
  • 델파이 기법 Delphi Method : 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견을 종합하여 산정하는 기법
  • 원시 코드 라인수 기법 LOC (Source Line Of Code) : 원시 코드 라인수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구해 비용을 산정 자세한 설명

출처 :  위키백과, MDN 공식문서, AWS

 

Q-net 에서 시험에 대한 정보를 파악한다

https://www.q-net.or.kr/man001.do?imYn=Y&gSite=Q 

 

Q-net 자격의 모든것

 

www.q-net.or.kr

자격정보를 확인하자

https://www.q-net.or.kr/crf005.do?id=crf00505&gSite=Q&gId= 

 

https://www.q-net.or.kr/crf005.do?gId=&gSite=Q&id=crf00505

 

www.q-net.or.kr

시험일정 정보처리기사( ※ 원서접수시간은 원서접수 첫날 10:00부터 마지막 날 18:00까지임)

2023년 정기 기사 1회 2023.01.10 ~ 2023.01.19
[빈자리접수 : 2023.02.07~2023.02.08]
2023.02.13
~
2023.03.15
2023.03.21 2023.03.28
~
2023.03.31
2023.04.22~2023.05.07 2023.06.09
2023년 정기 기사 2회 2023.04.17 ~ 2023.04.20 2023.05.13
~
2023.06.04
2023.06.14 2023.06.27
~
2023.06.30
2023.07.22~2023.08.06 2023.09.01
2023년 정기 기사 3회 2023.06.19 ~ 2023.06.22 2023.07.08
~
2023.07.23
2023.08.02 2023.09.04
~
2023.09.07
2023.10.07~2023.10.20 2023.11.15
  • ※ 2022년도 기사/산업기사 제1회 및 2회는 분리시행, 제3회 및 4회는 통합시행되며,
    산업기사는 제3회 시험부터 기사로 통합 표기됩니다.
  • 1. 원서접수시간은 원서접수 첫날 10:00부터 마지막 날 18:00까지 임.
  • 2. 필기시험 합격예정자 및 최종합격자 발표시간은 해당 발표일 09:00임.
  • 3. 주말 및 공휴일, 공단창립기념일(3.18)에는 실기시험 원서 접수 불가
  • 4. 상기 기사(산업기사, 서비스) 필기시험 일정은 종목별, 지역별로 상이할수 있음
    [접수 일정 전에 공지되는해당 회별 수험자 안내(Q-net 공지사항 게시)] 참조 필수

시험정보

수수료- 필기 : 19400 원 / - 실기 : 22600 원

<실기시험 출제 경향>

정보시스템 등의 개발 요구 사항을 이해하여 각 업무에 맞는 소프트웨어의 기능에 관한 설계, 구현 및 테스트를 수행에 필요한 

1. 현행 시스템 분석 및 요구사항 확인(소프트웨어 공학 기술의 요구사항 분석 기법 활용)

2. 데이터 입출력 구현(논리, 물리데이터베이스 설계, 조작 프로시저 등)

3. 통합 구현(소프트웨어와 연계 대상 모듈간의 특성 및 연계 모듈 구현 등)

4. 서버프로그램 구현(소프트웨어 개발 환경 구축, 형상 관리, 공통 모듈, 테스트 수행 등)

5. 인터페이스 구현(소프트웨어 공학 지식, 소프트웨어 인터페이스 설계, 기능 구현, 구현검증 등)

6. 화면설계(UI 요구사항 및 설계, 표준 프로토 타입 제작 등)

7. 애플리케이션 테스트 (테스트 케이스 설계, 통합 테스트, 성능 개선 등)

8. SQL 응용(SQL 작성 등)

9. 소프트웨어 개발 보안 구축(SW 개발 보안 설계, SW개발 보안 구현 등)

10. 프로그래밍 언어활용(기본 문법 등)

11. 응용 SW기초 기술 활용(운영체제, 데이터베이스 활용, 네트워크 활용, 개발환경 구축 등)

12. 제품 소프트웨어 패키징(제품 소프트웨어 패키징, 제품소프트웨어 매뉴얼 작성 , 버전 관리등 )

<세부 평가 내역>

- 필기시험의 내용은 고객지원 > 자료실의 출제기준을 참고 바랍니다.

- 실기시험은 필답형을 시행되며 고객지원> 자료실의 출제기준을 참고 바랍니다.

  출제기준 참조(www.q-net.or.kr)

 

시험과목 및 활용 국가직무능력표준(NCS)

국가기술자격의 현장성과 활용성 제고를 위해 국가직무능력표준(NCS)를 기반으로 자격의 내용

(시험과목, 출제기준 등)을 직무 중심으로 개편하여 시행합니다.(적용시기 2020.1.1.부터)

 

 필기시험      실기시험    
과목명 활용 NCS 능력단위 NCS 세분류 과목명 활용 NCS 능력단위 NCS 세분류
소프트웨어 설계 요구사항 확인 응용SW엔지니어링 정보처리 실무 요구사항 확인 응용SW엔지니어링
화면 설계 데이터 입출력 구현
애플리케이션 설계 통합 구현
인터페이스 설계 제품소프트웨어 패키징
소프트웨어 개발 데이터 입출력 구현 응용SW엔지니어링 서버프로그램 구현
통합 구현 인터페이스 구현
제품소프트웨어 패키징 프로그래밍 언어 활용
애플리케이션테스트 관리 응용 SW 기초 기술 활용
인터페이스 구현 화면 설계
데이터베이스 구축 SQL 응용 DB엔지니어링 애플리케이션 테스트 관리
SQL 활용 SQL 응용 DB엔지니어링
논리 데이터베이스 설계 소프트웨어 개발 보안 구축 보안엔지니어링
물리 데이터베이스 설계      
데이터 전환      
프로그래밍 언어 활용 서버프로그램 구현 응용SW엔지니어링    
프로그래밍 언어 활용      
응용 SW 기초기술 활용      
정보시스템 구축관리 소프트웨어개발 방법론 활용 응용SW엔지니어링      
IT프로젝트 정보시스템 구축관리 IT프로젝트관리      
소프트웨어 개발보안 구축 보안엔지니어링
시스템 보안 구축

   ※ 국가직무능력표준(NCS)? 산업현장에서 직무를 수행하기 위해 요구되는 지식·기술·태도 등의 내용을 국가가 산업부문별·수준별로 체계화한 것

취득방법

① 시 행 처 : 한국산업인력공단

② 관련학과 : 모든 학과 응시가능 

③ 시험과목

- 필기 1. 소프트웨어설계 2. 소프트웨어개발 3. 데이터베이스구축 4. 프로그래밍언어활용 5. 정보시스템구축관리

- 실기 : 정보처리 실무

④ 검정방법

- 필기 : 객관식 4지 택일형, 과목당 20문항(과목당 30분)

- 실기 : 필답형(2시간30분)

⑤ 합격기준

- 필기 : 100점을 만점으로 하여 과목당 40점 이상, 전과목 평균 60점 이상.

- 실기 : 100점을 만점으로 하여 60점 이상.

출처: Q-net

+ Recent posts