객체. 즉 클래스의 내부 변수와 메소드를 하나로 패키징하는 특징이다.
객체에 선언된 변수나 메소드가 구분없이 중구난방으로 접근할 수 있다면 정상적인 객체로 보기 어렵다.
캡슐화와 비슷한 개념으로 정보은닉이라는 개념이 있다.
정보 은닉은 객체의 내부 구현을 숨김으로써 객체가 반드시 정해진 메소드를 통해 상요작용하도록 유도한다.
이 두 개념은 객체의 응집도와 독립성을 높임으로써 객체의 모듈화를 지향한다.
객체의 모듈화가 잘 이루어져있을 경우 모듈 단위의 재사용이 매우 용이하다.
여러 로직에서 중복되는 코드를 모듈로 대처하면 모듈 내부의 소스만 수정하는 것으로 수정사항을 반영할 수 있다.
이는 곧 간편한 유지보수와 직결된다.
모듈 : 소프트웨어 설계에서 기능단위로 분해하고 추상화 되어 재사용 및 공유 가능한 수준으로 만들어진 단위
모듈화 : 소프트웨어의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법
-> 변경에 유연한 프로그래밍 작업을 위함.
내가 낸 문제) 캡슐화는 객체의 ( ) 와 ( ) 을 높임으로써 객체의 ( )를 지향한다.
빈칸을 채워주세요
답: 응집도, 독립성, 모듈화
문제 1) 좋은 설계는 낮은 응집도와 높은 결합도를 구성하는 것이다 (o,x)
내 답 : x, 이유: 높은 응집도와 낮은 결합도를 구성하는 것이다.(정답)
정답 : x, 높은 응집성 낮은 결합도(의존성의 정도)
문제 2) 객체지향 기법에서 캡슐화에 대한 설명으로 틀린 것은?
1) 캡슐화를 하면 객체 간의 결합도가 높아진다.
2) 캡슐화된 객체들은 재사용이 용이하다.
3) 프로그램 변경에 대한 오류의 파급 효과가 적다.
4) 인터페이스가 단순해진다.
내 답 : 1, 이유: 결합도가 낮아진다.(독립성이 높아짐) (정답)
정답 : 1
문제 3) 정보은닉을 위해서 객체에 있는 데이터와 함수들을 모두 은폐시켜야 한다 (o/x)
그 이유는?
내 답 : x, 이유: 은닉된 데이터에 접근할 수 있는 메서드가 필요하므로 모두 은폐시키면 안된다. (정답)
정답 : x, 객체지향 언어에서 어떤 목적을 달성하기 위해서는 필연적으로 다른 객체와의 협력이 있어야 하기 때문에 객체는 서로 관계를 맺는다.
만약 캡슐(객체) 속에 있는 모든 데이터와 함수들을 모두 은폐시킨다면 해당객체는 외부 다른 객체들과 정보를 주고받을 수 없기 때문에.
문제 4) 정보 은닉의 종류 중 캡슐화는 객체의 ( ) 및 ( )를 은닉하는 것이다.
내 답 : 데이터, 메서드 (오답)
정답 : 속성(멤버 변수), 행위(method)
문제 5) 멤버변수의 경우 보통 ( )접근제어자를 사용하여 외부로부터의 직접적인 접근을 막고
( )를 만들어 사용함으로써 내부 데이터에 제한적 접근을 할 수 있게 한다.
내 답 : private, getter setter (정답)
정답 : private, getter setter
문제 6)
1. class Sepecial 이미지 참고
1-1. Sepecial 클래스는 한 번만 생성하게끔 개발하려고 한다. 이러한 작업을 설계하는 디자인 패턴은?
내 답 : 싱글톤 패턴 (정답)
정답 : singleton pattern
1-2. 1번 이미지는 해당 디자인 패턴이 미적용된 상태이다. 수정해야할 줄번호와 수정된 코드를 쓰시오.
내 답 : 13번줄 / return null;(오답)
정답 : 3번 - private static Sepecial sepecial;
5번 - private Sepecial ( ){ }
9번 - public static getInstance( ) { /내용 /}
2-1. Person 클래스의 name을 읽기전용으로 설계한다고 했을 때 작성해야 할 메서드 이름과 접근지정자를 작성하시오
내 답 :
정답 : public, getName
2-2. Person 클래스의 name을 쓰기전용으로 설계한다고 했을 때 작성해야 할 메서드 이름과 접근지정자를 작성하시오
내 답 :
정답 : public, setName