본문 바로가기
솔루션모음/자바로 배우는 자료구조

[자바로 배우는 자료구조] 4장 솔루션 해답

by 이얏호이야호 2020. 6. 4.

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

 

댓글