4장 연습문제
1. 객체지향 프로그래밍의 의미와 특징을 설명하시오.
객체지향 프로그래밍>> 수행할 작업과 필요한 데이터들을 묶어서 독립적인 객체를 만들고, 이런 객체들을 인터페이스로 연결하여 전체 프로그램을 구성하는 방식의 프로그래밍 기법
객체지향 프로그래밍의 특징>>
캡슐화
- 캡슐화는 객체 내부의 메소드와 데이터를 외부에서 사용할 수 없도록 감싸서 객체를 독립적인 프로그램 부품으로 만드는 것. 데이터 은닉(data hiding)
코드의 재사용 : 상속
- 새로 작성할 객체가 이미 작성해 놓은 객체와 유사한 특성을 갖고 있다면, 그 객체의 코드를 그대로 물려받고 추가되는 부분의 코드만 작성하여 새로운 객체 생성.
다형성
- 객체의 다형성이란 같은 이름의 메소드가 상황에 따라 다른 연산을 수행하는 것.
2. 자바 프로그램에서의 캡슐화 방법을 설명하시오.
>> 자바 클래스 내부의 멤버들을 캡슐화하기 위해 접근 제어자 사용.
3. [예제 4-5]의 StudentScore 클래스를 자식 클래스가 아닌 일반 클래스로 다시 작성하시오.
>>
class StudentScore {
private String dept, stdNo, name;
private int kor, eng, math, sum;
private double ave;
StudentScore(String dept, String stdNo, String name,
int kor, int eng, int math){
this.dept = dept;
this.stdNo = stdNo;
this.name = name;
this.kor = kor;
this.eng = eng;
this.math = math;
this.sum = 0;
this.ave = 0.0;
}
public int getSum(){
sum = kor + eng + math;
return sum;
}
public double getAve(){
ave = sum/3.0;
return ave;
}
public void getStdInfo(){
System.out.println("** 학생 정보 출력 **");
System.out.println("학과 : " + dept);
System.out.println("학번 : " + stdNo);
System.out.println("이름 : " + name);
}
public void getStdScore(){
System.out.println("** 학생 점수 출력 **");
System.out.println("국어 : " + kor);
System.out.println("영어 : " + eng);
System.out.println("수학 : " + math);
System.out.println("총점 : " + getSum());
System.out.println("평균 : " + getAve());
}
}
class Ex_Student{
public static void main(String args[]){
StudentScore s_s = new StudentScore("컴퓨터과학과","20072140","홍길순",
91, 80, 95);
s_s.getStdInfo();
s_s.getStdScore();
}
}
4. 상속 관계의 클래스를 예를 들어 작성하고, 코드 재사용의 의미를 설명하시오.
>>
class StudentInfo{
protected String dept, stdNo, name;
StudentInfo(String dept, String stdNo, String name){
this.dept = dept;
this.stdNo = stdNo;
this.name = name;
}
public void getStdInfo(){
System.out.println("** 학생 정보 출력 **");
System.out.println("학과 : " + dept);
System.out.println("학번 : " + stdNo);
System.out.println("이름 : " + name);
}
}
class StudentScore extends StudentInfo{
private int kor, eng, math, sum;
private double ave;
StudentScore(String dept, String stdNo, String name,
int kor, int eng, int math){
super(dept, stdNo, name);
this.kor = kor;
this.eng = eng;
this.math = math;
this.sum = 0;
this.ave = 0.0;
}
public int getSum(){
sum = kor + eng + math;
return sum;
}
public double getAve(){
ave = sum/3.0;
return ave;
}
public void getStdInfo(){
super.getStdInfo();
}
public void getStdScore(){
System.out.println("** 학생 점수 출력 **");
System.out.println("국어 : " + kor);
System.out.println("영어 : " + eng);
System.out.println("수학 : " + math);
System.out.println("총점 : " + getSum());
System.out.println("평균 : " + getAve());
}
}
상속을 이용한 코드 재사용>> 새로 작성할 클래스가 이미 작성해 놓은 클래스와 중복된 특성을 갖고 있는 경우, 기존 클래스의 중복된 코드를 그대로 상속받아 재사용하고 추가되는 부분의 코드만 작성하여 새로운 클래스를 생성.
5. 소프트웨어의 위기 현상과 거리가 먼 것은?
가. 유지보수의 어려움
나. 성능 및 신뢰성의 부족
다. 개발 인력의 급증
라. 개발기간의 지연 및 개발 비용의 증가
자바로 배우는 자료구조의 해답을 더 보고싶다면? https://chuinggun.tistory.com/category/%EC%9E%90%EB%B0%94%20%EC%86%94%EB%A3%A8%EC%85%98/%EC%9E%90%EB%B0%94%EB%A1%9C%20%EB%B0%B0%EC%9A%B0%EB%8A%94%20%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0
'솔루션모음 > 자바로 배우는 자료구조' 카테고리의 다른 글
[자바로 배우는 자료구조] 5장 솔루션 해답 (0) | 2020.06.04 |
---|---|
[자바로 배우는 자료구조] 3장 솔루션 해답 (0) | 2020.06.04 |
[자바로 배우는 자료구조] 2장 솔루션 해답 (0) | 2020.06.04 |
[자바로 배우는 자료구조] 1장 솔루션 해답 (0) | 2020.06.04 |
댓글