코딩일기/자격증

정보처리기사 소프트웨어 설계 : 객체지향(Object Oriented)의 특징

jhy_2023 2024. 6. 28. 11:22
728x90
반응형


1. 객체지향 개념에서 다형성(Polymorphism)과 관련한 설명으로 틀린 것은?
① 다형성은 현재 코드를 변경하지 않고 새로운 클래스를 쉽게 추가할 수 있게 한다.
② 다형성이란 여러 가지 형태를 가지고 있다는 의미로, 여러 형태를 받아들일 수 있는 특징을 말한다.
③ 메소드 오버라이딩(Overriding)은 상위 클래스에서 정의한 일반 메소드의 구현을 하위 클래스에서 무시하고 재정의할 수 있다.
④ 메소드 오버로딩(Overloading)의 경우 매개 변수 타입은 동일하지만 메소드명을 다르게 함으로써 구현, 구분할 수 있다.

정답 : ④

 

  • 다형성은 현재 코드를 변경하지 않고 새로운 클래스를 쉽게 추가할 수 있게 한다.
    • 맞습니다. 다형성을 이용하면 인터페이스나 추상 클래스를 통해 새로운 클래스를 기존 코드에 쉽게 추가할 수 있습니다. 이렇게 하면 기존 코드를 수정하지 않고도 기능을 확장할 수 있습니다.
  • 다형성이란 여러 가지 형태를 가지고 있다는 의미로, 여러 형태를 받아들일 수 있는 특징을 말한다.
    • 맞습니다. 다형성은 같은 인터페이스를 구현한 여러 클래스가 다양한 형태로 동작할 수 있는 것을 의미합니다. 예를 들어, 하나의 메소드 호출이 다양한 객체에서 다르게 실행될 수 있습니다.
  • 메소드 오버라이딩(Overriding)은 상위 클래스에서 정의한 일반 메소드의 구현을 하위 클래스에서 무시하고 재정의할 수 있다.
    • 맞습니다. 메소드 오버라이딩은 상위 클래스의 메소드를 하위 클래스에서 재정의하여, 하위 클래스의 객체가 상위 클래스의 메소드를 호출할 때 하위 클래스의 메소드가 실행되도록 합니다.
    • 오버라이딩은 상위 클래스(부모 클래스)에서 이미 정의된 메서드를 하위 클래스(자식 클래스)에서 같은 시그니처(메서드 이름, 매개변수 타입, 개수)를 가진 메서드로 다시 정의하는 것을 말합니다. 이 과정에서 하위 클래스는 상위 클래스의 메서드를 재정의하여 자신의 필요에 맞게 구현할 수 있습니다. 오버라이딩은 상속 관계에서 발생하며, 다형성의 한 형태로 간주됩니다.
    • 주요 특징 : 오버라이딩을 통해 하위 클래스는 상위 클래스의 동작을 변경할 수 있습니다., 메서드명과 매개변수는 동일하게 유지되어야 합니다.
  • 메소드 오버로딩(Overloading)의 경우 매개 변수 타입은 동일하지만 메소드명을 다르게 함으로써 구현, 구분할 수 있다.
    • 틀렸습니다. 메소드 오버로딩은 메소드명이 동일하지만 매개변수의 타입, 개수, 순서가 다르도록 하여 같은 이름의 메소드를 여러 개 정의하는 것을 말합니다. 즉, 메소드명이 다르면 오버로딩이 아닙니다.
    • 오버로딩같은 메서드명을 가지면서 매개변수의 타입, 개수, 순서가 다른 여러 개의 메서드를 한 클래스 내에 정의하는 것을 말합니다. 즉, 메서드 시그니처가 다르면서 같은 이름의 메서드를 여러 개 정의하여 사용할 수 있습니다.


캡슐화(Encapsulation)

캡슐화는 객체지향 프로그래밍의 중요한 특징 중 하나로, 데이터(속성)와 이를 처리하는 함수(메서드)를 하나의 단위로 묶는 것을 말합니다. 이로 인해 객체 내부의 데이터가 외부에 은폐되어 객체의 세부 내용을 감추고, 이를 통해 데이터의 무결성을 보호하며, 변경 시 오류의 파급효과를 줄입니다. 캡슐화된 객체들은 외부에서 접근할 수 있는 인터페이스만을 제공하며, 이를 통해 객체의 재사용성을 높입니다.
예를 들어, 은행 계좌 객체는 계좌 번호와 잔액(데이터)을 가지며, 입금과 출금(메서드) 기능을 제공할 수 있습니다. 외부에서는 직접 계좌 잔액을 변경할 수 없고, 오직 입금과 출금을 통해서만 잔액을 조작할 수 있습니다.
  • 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것
  • 캡슐화 된 객체의 세부 내용이 외부에 은페되어, 변경이 발생할 때 오류의 파급효과를 줄인다.
  • 캡슐화 된 객체들은 재사용이 용이하다.


정보 은닉(Information Hiding)

정보 은닉은 객체지향 프로그래밍에서 캡슐화의 핵심 개념 중 하나로, 객체가 자신의 데이터를 외부에서 접근하지 못하도록 숨기고, 필요한 경우에만 자신이 제공하는 연산을 통해서만 접근할 수 있도록 하는 것입니다. 이를 통해 객체 간의 의존성을 줄이고, 코드의 변경에 따른 영향을 최소화할 수 있습니다.
예를 들어, 클래스의 필드를 private로 선언하여 외부에서 직접 접근하지 못하도록 하고, 필요한 경우 getter와 setter 메서드를 통해서만 접근할 수 있도록 합니다.
  • 다른 객체에서 자신의 정보를 숨기고 자신의 연산만을 통해 접근을 허용하는 것
  • 캡슐화에서 가장 중요한 개념


추상화(Abstraction)

추상화는 객체의 속성 중에서 가장 중요한 것에 중점을 두어 불필요한 부분을 생략하고, 중요한 부분만을 개략화하는 것을 의미합니다. 이를 통해 복잡한 시스템을 더 단순하고 이해하기 쉽게 만들 수 있습니다. 추상화는 데이터의 공통 성질을 추출해 슈퍼 클래스를 선정하는 개념, 즉, 모델화하는 과정입니다.
예를 들어, 동물 클래스는 모든 동물이 공통으로 가지는 속성(예: 나이, 성별)과 메서드(예: 먹기, 움직이기)를 정의하고, 이를 상속받는 개, 고양이 등의 클래스는 개별적인 특성을 추가로 정의할 수 있습니다.
  • 불필요한 부분을 생략, 객체의 속성 중 가장 중요한 것에만 중점을 두고 개략화 하는 것
  • 데이터의 통 성질을 추출해 슈퍼 클래스를 선정하는 개념, 즉, 모델화 하는 것


상속성(Inheritance)

상속성은 이미 정의된 상위 클래스(부모 클래스)의 모든 속성과 연산(메서드)을 하위 클래스(자식 클래스)가 물려받는 것을 의미합니다. 하위 클래스는 상위 클래스의 기능을 재사용할 수 있으며, 필요에 따라 추가적인 속성과 메서드를 정의하거나 상위 클래스의 메서드를 재정의(오버라이딩)할 수 있습니다.
예를 들어, Vehicle 클래스가 있고, 이를 상속받은 Car 클래스와 Bike 클래스가 있을 때, Vehicle 클래스에서 정의된 속성과 메서드를 Car와 Bike 클래스가 물려받아 사용할 수 있습니다.
  • 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
  • 하위 클래스는 다시 정의하지 않고서도 자신의 속성으로 사용할 수 있다.

다형성(Polymorphism)

다형성은 메시지(메서드 호출)에 대해 객체가 각각 고유한 방법으로 응답할 수 있는 능력을 의미합니다. 이는 동일한 메서드명이지만 서로 다른 클래스에서 다르게 구현되어, 하나의 메시지가 각 객체에서 서로 다른 방식으로 실행될 수 있게 합니다. 다형성은 주로 메서드 오버라이딩과 인터페이스를 통해 구현됩니다.
예를 들어, 동물 클래스에 makeSound()라는 메서드가 있고, 이를 상속받은 개 클래스는 makeSound() 메서드를 멍멍으로, 고양이 클래스는 야옹으로 구현할 수 있습니다. 동일한 makeSound() 메서드 호출이지만, 객체의 타입에 따라 다른 동작을 하게 됩니다.
  • 메시지에 의해 객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력을 의미한다.
  • 객체들은 동일한 메소드명을 사용하며 같은 의미의 응답을 한다.


정보처리기사 필기, 시나공과 함께 시작하세요!
IT 자격증 시험 준비의 표준, 시나공은 믿을 수 있는 파트너입니다. 정보처리기사 필기를 대비하는 가장 효율적이고 효과적인 방법을 찾고 있다면, 시나공 시리즈가 최선의 선택입니다.
정보처리기사 필기 시나공으로 시작하세요!


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형