[8장 연습문제]

 

01. 유효성 검사란 무엇인가?

 

사용자가 폼에 입력한 데이터 값이 서버로 전송되기 전에 특정 규칙에 맞게 입력되었는지 검증 하는것을 말한다.

유효성 검사를 위한 핸들러 함수는 폼 페이지에서 이벤트 발생 시(버튼 클릭 or <submit>클릭) 유효성 검사를 위해 매핑하는 메소드를 의미한다.

 

02. 유효성 검사를 위한 두 가지 처리 기법을 간단히 설명하시오.

 

1. 기본 유효성 검사:  사용자가 폼의 입력항목에 입력한 데이터 값의 존재유무, 데이터 길이, 숫자 등 기본적인 것을 검사

2. 데이터 형식 유효성 검사: 사용자가 폼의 입력항목에 입력한 데이터 값이 특정 형태에 적합한지 검사하기 위해 정규표현식 사용

 

03. 유효성 검사를 위한 핸들러 함수와 폼 페이지를 작성하는 기법을 설명하시오.

-> 04번 문제의 코드 참조

 

04. 비밀번호가 아이디를 포함하지않도록 조건에 맞게 jsp애플리케이션을 만들고 실행결과를 확인하시오. 

 

case 1. 아이디:admin, 비밀번호:admin1234입력              case2. 아이디, 비밀번호 미입력

       

 

case3. 아이디:admin, 비밀번호:123 입력

- validation01.jsp 파일 생성

- validaton01_process.jsp 파일 생성

- 아이디, 비밀번호 항목이 입력되지 않으면 메시지창 출력

- 비밀번호에 ID가 포함되면 메시지창 출력

 

<코드>

1. validation01.jsp

21~25행은 "입력한 패스워드 정보가 아이디 값을 포함하면 경고창을 띄우고 수정한다." 를 의미합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<%@ page contentType="text/html; charset=UTF-8"%>
<html>
<head>
<title>Validation</title>
</head>
<script type="text/javascript">
    function checkInfo(){
        var form= document.form;
        if(form.id.value=="")
        {
        alert("아이디 입력");
        form.passwd.select();
        return
        }
        else if(form.passwd.value=="")
        {
        alert("비밀번호 입력");
        form.passwd.select();
        return;
        }
    if((form.passwd.value).search(form.id.value)>-1)
        {
        alert("비밀번호는 ID를 포함할 수 없습니다.");
        return;
        }
    form.submit();
        
    }
</script>
<body>
    <form action="validation01_process.jsp" name="form" method="post">
        <p> 아이디: <input type="text" name="id">
        <p> 비밀번호: <input type="password" name="passwd">
        <p> <input type="submit" value="전송" onclick="checkInfo()">
    </form>
</body>
</html>
cs

 

2. validation01_process.jsp

1
2
3
4
5
6
7
8
9
10
11
<%@ page contentType="text/html; charset=UTF-8"%>
<html>
<head>
<title>Validation</title>
</head>
<body>
 
    <p>아이디: <%=request.getParameter("id") %>
    <p>비밀번호: <%=request.getParameter("passwd") %>
</body>
</html>
cs

 

 

05. 비밀번호로 동일한 영문이나 숫자를 3개이상 사용하지않도록 조건에 맞게 구현하고 결과를 확인하시오.

         

 

- 비밀번호에 동일한 영문이나 숫자가 3개연속 입력되면 메시창 출력

ex) aaa-> 오류, 1111-> 오류

 

<코드>

1. validation02.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Validation</title>
</head>
<script>
function check(){
 
    var form=document.frm;
    var passwd=form.passwd.value;
    var passwdcheck=form.passwd2.value;
    if(passwd!=passwdcheck)
        {
        alert("비밀번호 다시 확인");
        return false;
        }
    if(/(\w)\1\1/.test(passwd))
        {
        alert("영문,숫자는 3자 이상 연속 입력 불가능");
        form.passwd.focus();
        return false;
        }
    form.submit();
}
 
</script>
<body>
 
<form action="validation01_process.jsp" name="frm">
<p> 아이디 : <input type="text" name="id">
<p> 비밀번호 : <input type="text" name="passwd">
<p> 비밀번호 확인 : <input type="text" name="passwd2">
<input type="button" value="전송" onclick="return check();">
</form>
 
</body>
</html>
cs

 

2. validation02_process.jsp

1
2
3
4
5
6
7
8
9
10
11
<%@ page contentType="text/html; charset=UTF-8"%>
<html>
<head>
<title>Validation</title>
</head>
<body>
 
    <p>아이디: <%=request.getParameter("id") %>
    <p>비밀번호: <%=request.getParameter("passwd") %>
</body>
</html>
cs

 

 

06. 비밀번호가 영문, 숫자, 특수기호를 조합한 8자이상이 되도록 조건에 맞게 구현하고 결과를 확인하시오.

 

 

<코드>

1. validation03.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Validation</title>
</head>
<script>
function check(){
 
    var form=document.frm;
    var passwd=form.passwd.value;
    var passwdcheck=form.passwd2.value;
    var regExpPasswd=/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,}$/;
    if(!regExpPasswd.test(passwd))
        {
        alert("영문+숫자+특수기호 8자리 이상 구성 필요");
        return false;
        }
    form.submit();
}
 
</script>
<body>
 
<form action="validation01_process.jsp" name="frm">
<p> 아이디 : <input type="text" name="id">
<p> 비밀번호 : <input type="text" name="passwd">
<p> 비밀번호 확인 : <input type="text" name="passwd2">
<input type="submit" value="전송" onclick="return check();">
</form>
 
</body>
</html>
cs

 

 

 

 

 

 

 

 

[7장 연습문제]

 

01. 파일 업로드를 위한 form 태그내에 반드시 설정해야 하는 기법은 무엇인가?

 

1. action 속성-> 파일 업로드를 처리할 JSP파일 설정

2. method 속성-> 반드시 POST방식으로 설정

3. enctype 속성-> multipart/form-data로 설정

 

02. 파일을 서버에 업로드하는 처리 기법에 대해 간단히 설명하시오.

 

1. MultipartRequest를 이용한 파일 업로드

 MultipartRequest 객체 생성-> 해당 클래스가 제공하는 메소드를 사용하여 요청 파라미터를 읽어오고 파일 업로드

* 03번 문항 참조

 

2. Commons-FileUpload를 이용한 파일 업로드

 DiskFileUpload 객체 생성-> 해당 클래스가 제공하든 메소드를 사용하여 요청 파라미터를 읽어오고 

 FileItem 클래스의 메소드를 이용하여 요청 파라미터를 분석(일반데이터 or 파일)및 처리하여 파일 업로드

 

03. MultipartRequest 클래스를 이용하여 조건에 맞게 JSP애플리케이션을 만들고 실행결과를 확인하시오.

* 서버의 파일 저장 폴더 이름: C:\\exercise

   

 

<폴더>

 

 

1. WEB-INF/lib/폴더에 cos.jar파일 추가

2. fileupload01.jsp 파일 생성

3. fileupload01_process.jsp 파일 생성

 

<코드>

1. fileupload01_jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>File Upload</title>
</head>
<body>
<form name="fileForm" method="post" enctype="multipart/form-data" action="fileupload01_process.jsp">
        <p> 파일: <input type="file" name="filename">
        <p> <input type="submit" value="파일 올리기">
    
    </form>
</body>
</html>
cs

 

 

2. fileupload01_process.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="com.oreilly.servlet.*"%>
<%@ page import="com.oreilly.servlet.multipart.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%
    MultipartRequest multi = new MultipartRequest(request, "C:\\exercise"5 * 1024 * 1024"utf-8"new DefaultFileRenamePolicy());
 
    Enumeration params = multi.getParameterNames();
 
    while (params.hasMoreElements()) {
        String name = (String) params.nextElement();
        String value = multi.getParameter(name);
        out.println(name + " = " + value + "<br>");
    }
    out.println("-----------------------------------<br>");
 
    Enumeration files = multi.getFileNames();
 
    while (files.hasMoreElements()) {
        String name = (String) files.nextElement();
        String filename = multi.getFilesystemName(name);
        String original = multi.getOriginalFileName(name);
        String type = multi.getContentType(name);
        File file = multi.getFile(name);
 
        out.println("요청 파라미터 이름 : " + name + "<br>");
        out.println("실제 파일 이름 : " + original + "<br>");
        out.println("저장 파일 이름 : " + filename + "<br>");
        out.println("파일 콘텐츠 유형 : " + type + "<br>");
 
        if (file != null) {
            out.println(" 파일 크기 : " + file.length());
            out.println("<br>");
        }
    }
%>
cs

 

 

04. Commons-FileUpload 패키지를 이용하여 조건에 맞게 JSP애플리케이션을 만들고 결과를 확인하시오.

    

 

<폴더>

 

 

1. WEB-INF/lib 폴더에 commons-fileupload.jar, commons-io.jar 파일 추가

2. fileupload02.jsp파일 생성

3. fileupload02_process.jsp파일 생성

 

<코드>

1. fileupload02.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form name="fileForm" method="post" enctype="multipart/form-data" action="fileupload02_process.jsp">
        <p> 파일: <input type="file" name="filename">
        <p> <input type="submit" value="파일 올리기">
    
    </form>
</body>
</html>
cs

 

2. fileupload02_process.jsp

* 16~19행: 파일의 최대 크기/저장 버퍼 크기/ 파일 저장경로 설정(c:\\exercise)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<%@ page  contentType="text/html; charset=UTF-8"%>
<%@page import="org.apache.commons.fileupload.*" %>
<%@page import="java.util.*" %>
<%@page import="java.io.*" %>
 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
            String Path="C:\\exercise";
    
    DiskFileUpload upload=new DiskFileUpload();
    upload.setSizeMax(1000000);
    upload.setSizeThreshold(4096);
    upload.setRepositoryPath(Path);
    
    List items=upload.parseRequest(request);
    Iterator params=items.iterator();
    while(params.hasNext())
    {
        FileItem item=(FileItem)params.next();
        if(!item.isFormField())
        {
            String fileFiledName=item.getFieldName();
            String fileName=item.getName();
            String contentType=item.getContentType();
            
            fileName=fileName.substring(fileName.lastIndexOf("\\")+1);
            long fileSize=item.getSize();
            
            File file=new File(Path+"/"+fileName);
            item.write(file);
            
            out.println("요청 파라미터 이름:"+fileFiledName+"<br>");
            out.println("저장 파일 이름:" +fileName+"<br>");
            out.println("파일 콘텐츠 유형:"+contentType+"<br>");
            out.println("파일 크기: "+fileSize);
        }
    }
    %>
</body>
</html>
cs
 
 
 
 
 

 


[6장] 연습문제


1. 통신 다이어그램의 특징중 잘못된 것은? 2 ( 메시지 실행순서는 위에서 아래로 진행된다.)

-> 순차 다이어그램의 특징이다.


2. 생략


3. 상품 주문 관리 시스템 시나리오를 보고 통신 다이어그램을 작성하시오.

--------------------------------------------------------------------------------

- 고객은 상품 선택-> 구입 버튼 클릭-> 배달 정보 입력

- 배달 정보와 함께 가격 정보를 보여줌

- 고객이 상품 구매 시 시스템이 구매를 승인, 거래 확인 메시지 송부-> 고객이 내역 확인

--------------------------------------------------------------------------------


1) 객체 정의: UI, 고객, 시스템 

2) 링크 연결: 고객-UI, 시스템을 링크로 연결한다.

3) 메시지 정의: 시나리오 내용과 같음

4) 통신 다이어그램 작성

* 같은 방향의 여러개의 메시지 정의 시 화살표가 하나로 겹쳐야 하지만 툴에서 표현이 안되어 올바르게 표현이 안됨.

 [" ": 클래스 명] 형태는 해당 클래스 명 내의 임의의 객체를 의미함.(해당 툴에서 " : 클래스 명" 꼴로 표기가 안되어 " " 표시)







[5장] 연습문제


1. UML 순차 다이어그램에 관한 설명으로 잘못된 것은? 3 (전체적으로 액티비티 다이어그램과 유사한 형태를 띤다.)

-> 액티비티 다이어그램은 통신 다이어그램과 유사하다.


2. 문제의 그림에서 명시적으로 표현되지 않은 요소는? 3 (자기 메시지)


3. UML 다이어그램에 대한 설명으로 가장 적절하지 않은 것은? 2 (순차 다이어그램은 구조적 관계를 중심으로 표현)

-> 순차 다이어그램은 객체 간 상호작용을 구조적 관계를 중심으로 표현하는게 아니라 시간 적 순서에 따라 표현함.

구조적 관계를 중심으로 표현한 다이어그램은 통신다이어그램임.


4. UML 다이어그램에 관한 설명으로 옳지 않은 것은? 2 (상태다이어그램- 클래스 간 메시지 교환을 시간 흐름에 따라 표현)

-> 상태 다이어그램이 아닌 순차 다이어그램에 관한 설명임


5. 생략

6. 생략


7. 주문 관리 시스템 문제 기술서를 보고 순차 다이어그램을 작성하시오.

-----------------------------------------------------------------------------

- 고객 확인을 통해 시스템 접속(회원 가입 때 입력한 비밀번호, 아이디를 통해)

- 접수 관리 직원은 확보된 상품등록, 재고관리 직원은 상품 확보

- 고객은 등록된 상품 선택-> 장바구니 등록

- 고객이 결제하면 운송 직원이 상품을 고객에게 배달

-----------------------------------------------------------------------------


1) 액터/ 클래스 배치: 직원- 시스템, 고객-시스템UI를 짝지어 배치시킨다. 

2) 메시시 정의

- 직원-> 시스템: 상품 확보, 상품 등록

고객-> 시스템UI: 접속, 장바구니 등록, 결제

시스템UI-> 시스템UI-> 고객 확인

- 시스템UI-> 시스템: 등록

시스템-> 직원: 안내

직원-> 고객: 배송

3) 순차 다이어그램 작성






[4장] 연습문제 -객관식 위주


1. 클래스 다이어그램에서 가장 표현하기 어려운 개념은? 3(분할과 결합)


2. 생략

3. 생략


4. 집합관계와 복합 관계에 대한 설명으로 옳지않은 것은? 2 (복합관계는 부분 객체를 다른 객체와 공유할 수 있다.)

-> 복합 관계는 전체, 부분 객체로 관계가 나눠지며 생명주기가 다른 독립적인 관계기 때문에 공유할 수 없음


5. 클래스 다이어그램에서 has-a 관계와 is-a-kind-of 관계가 올바르게 짝지어진 것은? 3

-> has-a관계: 

 

  is-a-kind-of 관계


6. 자바 인터페이스에 대한 설명으로 적절하지 않은 것은? 3 (다중상속을 허용하지 않고 단일 상속만 허용한다.)

-> 다중 상속을 허용한다.


7. 생략

8. 생략


10. 다음 유스케이스 명세서에 대한 클래스 다이어그램을 작성하시오.

-------------------------------------------------------------------------

액터: 고객

유스케이스명: 상품 선택

개요: 고객은 쇼핑몰에서 상품을 선택한다.

사전조건: 고객은 고객확인을 받았다.

이벤트 흐름

- 정상흐름

   1) 고객은 컴퓨터 상품을 선택-> 구입

   2) 시스템은 컴퓨터 관련 목록 보여줌

   3) 고객은 키보드 상품 선택-> 장바구니 등록-> 구매 버튼 클릭

   4) 시스템은 장바구니에 상품을 등록하고 다른 키보드 상품 보여줌

-------------------------------------------------------------------------


1) 후보 클래스 도출: 장바구니 등록, 상품 선택, 구매, 회원 확인, 상품, 목록 전시, 상품 조회, 고객

2) 부적절한 클래스 제거: 상품, 고객

3) 클래스에 대한 검토

- 하나의 대상과 개념만 갖는가? -> yes, 각 클래스는 하나의 기능만 가짐

- 구체적이고 명확한 이름을 가지는가?-> yes. 이름만 보고도 기능을 알 수 있음

- 높은 응집도, 낮은 결합도를 갖는가?-> yes. 각 클래스는 다른 클래스에 종속되지 않음

4) 클래스의 추상화 수준과 표현

- 분석: 위에서 선정했던 후보 클래스가 분석 단계의 결과물이라고 볼 수 있음

- 설계: 직접적으로 설계하진 않기 때문에 구현과 관려된 자료구조, 통신 프로토콜은 고려하지 않음

5) 메소드 추출: 상품 등록, 상품 삭제, 목록 수정, 취소, 고객 정보 확인

6) 클래스 간 관계

- 연관관계: 장바구니 등록- 상품 선택, 상품 조회-상품 선택, 구매-상품 선택

- 의존관계: 구매-회원 확인, 관련 목록 전시- 상품 조회

7) 클래스 다이어그램 작성






[3장] 연습문제 -객관식 위주


1. 유스케이스 다이어그램에서 표현되지 않는 것은? 4 (클래스 간의 관계)


2. 유스케이스 추출 후에 일어나는 분석 과정의 활동으로 보기 어려운 것은? 3 (객체의 메서드 구현하기)

-> 유스케이스 추출은 요구사항 정의, 분석 단계에서 이루어지는 활동이고 구현, 설계 과정은 아님


3. 유스케이스 간의 관계로 적합하지 않은 것은? 3

-> 유스케이스 끼리의 관계 유형 중 연관 관계는 없음


4. 개발 초기에 고객과 의사소통 시 가장 적절한 UML다이어그램은? 1 (유스케이스 다이어그램과 명세서)


5. 인터넷 쇼핑몰 시스템 문제 기술서를 보고 유스케이스 다이어그램을 작성하시오.

------------------------------------------------------------

- 인터넷을 통해 물품 판매 시스템 구축

- 고객 관리

- 고객이 로그인 및 물품 구입 시 본인 확인 절차 거침

- 물품 구매 시 신용카드, 포인트로 결제 가능

- 신용카드 결제 시 카드 승인사에 승인 요청

- 고객은 배송상황 조회, 직원은 배송 추적 할 수 있음

------------------------------------------------------------


1) 액터고객, 직원, 암호화 모듈, 카드사

2) 유스케이스:  회원가입, 로그인, 구매, 결제, 물품구매, 배송조회, 본인확인, 신용카드 결제

3) 다이어그램


6. 주문 관리 시스템 문제 기술서를 보고 유스케이스 다이어그램을 작성하시오.

------------------------------------------------------------

- 고객 확인을 통해 시스템 접속 가능

- 고객 확인 시 회원 가입 때 입력한 아이디, 비밀번호를 입력하여 확인

- 접수 관리 직원은 확보된 상품 등록, 재고관리 직원은 상품 확보

- 고객은 상품선택->장바구니 등록-> 카드or계좌이체로 결제

- 운송 직원이 고객에게 상품 배달

------------------------------------------------------------


1) 액터 접수 관리 직원, 재고관리 직원, 운송직원, 주문관리 시스템

2) 유스케이이스: 회원가입, 로그인, 상품 확보, 상품 등록, 상품 선택, 장바구니 등록, 결제, 고객 확인, 배송 

3) 다이어그램


7. 비디오숍 시스템 문제 기술서를 보고 유스케이스 다이어그램을 작성하시오.

------------------------------------------------------------

- 회원 가입을 통해 등록된 회원만 비디오 대여 가능

- 시스템은 대여, 반납, 연체 확인 기능 존재

- 대여 시 고객이 비디오 선택 시 비디오 코드확인 후 입력

- 고객이 대여중인 비디오 있을 시 표시, 대여기간 지났으면 연체료 계산하여 표시

- 연체 고객은 비디오 대여 불가-> 연체료 납부 후 대여가능

- 비디오 대여 시 대여 목록에 비디오 코드와 고객명 등록

------------------------------------------------------------


1) 액터: 회원, 비디오숍 시스템, 관리자

2) 유스케이스: 회원가입, 대여, 반납, 연체확인, 비디오 코드 확인

3) 다이어그램


9. 도서 관리 시스템 문제 기술서를 보고 유스케이스 다이어그램을 작성하시오.

------------------------------------------------------------

- 시스템에 등록된 사람에게 책, 잡지 대여

- 사서는 새로운 책이 있으면 구입하고 오래된 책,잡지는 폐기-> 구입,폐기한 책은 도서 목록에서 수정

- 고객은 예약을 통해 대여 가능

------------------------------------------------------------


1) 액터: 고객, 사서, 도서관리 시스템

2) 유스케이스: 대여, 목록 추가, 목록 삭제, 예약, 예약 취소, 등록 확인

3) 다이어그램











[2장] 연습문제 -객관식 위주


1. UML 다이어그램 중에서 동적 모델이 아닌 것은? 2 (클래스 다이어그램)

-> 동적 모델: 유스케이스 다이어그램, 활동 다이어그램, 순서 다이어그램

    정적 모델: 클래스 다이어그램


2. UML 스테레오 타입에 관한 설명이 아닌 것은? 4 (몇 개의 특별한 요소에만 적용할 수 있다.)

-> 기본 요소 외에 새로운 요소를 만들어 내기 위한 확장일 뿐 특정 UML 요소에만 적용할 수 있는게 아님


3. UML다이어그램은 ~~ 이러한 관점에서 볼 때 다음 중 다른 유형의 다이어그램은? 1 (컴포넌트 다이어그램)

-> 동적 모델: 유스케이스 다이어그램, 활동 다이어그램, 순차 다이어그램

    정적 모델: 컴포넌트 다이어그램


4. 요구사항 모델링에 사용되는 다이어그램은? 2 (유스케이스 다이어그램)


5. UML 구성 요소에서 {} 기호를 사용하여 이전 규칙을 수정하거나 새롭게 생성하기 위한 것은? 3 (제약)

-> 스테레오 타입: << >>

    꼬리표 값: {tag=value}

    제약: {}


6. 스테레오 타입의 올바른 표기법은? 4 (<<sybsystem>>) 


7. {tag=value} 의 기호를 사용하는 UML 구성 요소는? 1 (꼬리표 값)


8. 소프트웨어의 물리적 단위 구성과 의존 관계를 표현하는 다이어그램은? 3 (컴포넌트 다이어그램)

-> 배치 다이어그램: 노드와 노드에 존재하는 컴포너늩의 물리적 구성 표현

    컴포넌트 다이어그램: SW의 물리적 단위구성과 의존관계 표현


9. 정적 모델링에 사용되는 다이어그램이 아닌것은? 4 (상태 다이어그램)

-> 동적 모델: 상태 다이어그램

    정적 모델: 클래스 다이어그램, 컴포넌트 다이어그램, 패키지 다이어그램


10. 그룹화와 관련된 것은? 2 (패키지)


11. 관계의 종류에 속하지 않는 것은? 4 (그룹 관계)


12. 동적 모델링에 사용되는 다이어그램이 아닌것은? 3 (클래스 다이어그램)


13. 순차 다이어그램과 동일한 내용으로, 객체 사이의 데이터 흐름을 보여주는 다이어그램은? 4 (통신 다이어그램)

-> 순차 다이어그램: 객체 간 관계를 시간 순서에 따라 나열

    통신 다이어그램:  객체 사이의 구조적 관계를 표현


14. UML의 구성요소를 설명하시오.

-> 사물(정적 사물, 동적 사물, 주해 사물), 관계(의존, 연관, 일반화, 실체화),  다이어그램(9가지)


17. 유스케이스의 구성 요소와 그 역할을 설명하시오.

-> 액터(시스템 외부에 존재하며 시스템과 상호작용하는 사람or 시스템)

    유스케이스(시스템이 액터에게 제공하는 기능의 집합, 

    관계( 유스케이스와 액터 간의 상호작용 표현)


18. 클래스 다이어그램을 표현할 때 표현되는 모든 특성을 설명하시오.

-> 클래스(이름, 속성, 동작)

    접근자(public, private, protected)

    관계유형(의존, 연관, 일반화, 집합, 복합, 실체화)


 







[1장 연습문제] - 객관식 위주 


01. UML의 특징이 아닌 것은? 4

1) 가시화 언어이다. 

2) 명세화 언어다. 

3) 구축 언어다. 

4) 기능 중심 언어다.


-> 시스템을 이해하기 쉬운 형태로 표현하여 분석가, 설계자, 의뢰인 등의 효율적 의사 결정을 돕는 모델링 언어다.


02. 객체지향 기법에서 캡슐화에 대한 설명으로 틀린 것은? 1

1) 캡슐화를 하면 객체 간의 결합도가 높아진다.

2) 캡슐화된 객체들은 재사용이 용이하다.

3) 프로그램 변경에 대한 오류의 파급 효과가 적다.

4) 인터페이스가 단순해진다.


-> 내부 기능과 메소드를 하나로 묶어 놨기 때문에 객체 간 결합도는 낮아진다. (결합도가 낮을 수록 잘 만든 SW)


03. 객체모델, 동적 모델, 기능 모델의 3개 모델로 구성되는 객체 지향 분석 기법은? 1

1) Rambaugh method 

2) Wrifs-Brock 

3) Jacobson method

4) Coad & Yourdon method


04. 객체지향 시스템에서 자료부분과 연산 부분 등 정보 처리에 필요한 기능을 한 테두리로 묶는 것을 의미하는 용어는? 3

1) 정보 은닉 

2) 클래스

3) 캡슐화 

4) 통합


-> 주의) 정보 은닉은 외부 인터페이스만 제공하고 객체의 상세한 내용(정의, 메소드 등)을 숨기는 것을 말하므로, 의미가 다름


05. 객체지향 기법에서 메시지의 전달은 어덯게 이루어지는가? 3

1) 속성에서 속성으로

2) 객체에서 속성으로

3) 객체에서 객체로

4) 클래스에서 데이터로


-> 송신 객체, 수신 객체 간 메시지 전달을 통한 상호작용을 이룬다.


06. 객체지향 기법에서 상속의 결과로 얻을 수 있는 가장 중요한 이점은? 3

1) 모듈 라이브러리를 재이용한다.

2) 객체 지향 데이터베이스를 사용할 수 있다.

3) 클래스와 오브젝트들을 재사용할 수 있다.

4) 프로젝트들을 보다 효과적으로 관리할 수 있다.


-> 자원의 재사용이라는 키워드가 들어가야 한다.


07. 객체지향 기법에서 하나 이상의 유사한 객체들을 묶어 하나의 공통된 특성을 표현한 것은? 1

1) 클래스

2) 함수

3) 메서드

4) 메시지


08. 객체에게 어떠한 행위를 하도록 지시하는 명령은? 4

1) 클래스 

2) 인스턴스

3) 오브젝트

4) 메시지


09. 객체지향 개념에 관한 설명 중 잘못된 것은? 3

1) 객체들 간의 상호작용은 메시지를 통해 이루어진다.

2) 클래스는 인스턴스들이 갖는 변수와 인스턴스들이 사용할 메서드를 갖는다.

3) 다중 상속은 2개 이상의 클래스가 한 클래스로부터 상속받는 것을 의미한다.

4) 객체가 갖는 데이터를 처리하는 알고리즘을 연산 또는 메서드라 한다.


-> 다중 상속은 하나의 클래스가 두개 이상의 상위 클래스의 속성을 물려받는 것을 의미함.


10. 객체지향 설계에 대한 설명으로 옳지 않은 것은? 2

1) 객체지향 설계에서 가장 중요한 문제는 시스템을 구성하는 개체와 속성, 연산을 인식하는 것이다.

2) 시스템 기술서의 동사는 객체를, 명사는 연산이나 객체 서비스를 나타낸다.

3) 객체 지향 설계를 문서화 할 때 객체와 그들의 부객체의 계층적 구조를 보여주는 계층 차트를 그리면 유용하다.

4) 객체는 순차적으로 또는 동사적으로 구현될 수 있다.


-> 동사는 연산이나 객체 서비스, 명사는 객체를 의미함


11. UML에 대한 설명으로 옳지 않은 것은? 4

1) 소프트웨어 시스템의 인공물들을 명세하고 가시화하며 구성하기 위한 언어다.

2) 산업 표준이 될 것으로 기대되는 객체 지향 모델링 언어를 정의한 전문가들이 노력한 결과다.

3) 시스템 요구사항을 명세하고 설계 의사 결정을 파악하는 데 도움이 된다.

4) UML 표기법은 객체 지향 분석과 설계 모델을 그래프로 표현할 수 없다는 단점이 있다.


-> 유스케이스 다이어그램, 통신 다이어그램 등을 보면 마치 그래프처럼 표현할 수 있음


12. 객체지향 기술에 대한 설명으로 옳지 않은 것은? 4

1) 객체란 필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 소프트웨어 모듈이다.

2) 클래스란 객체타입을 말하며 객체들이 갖는 속성과 적용 연산을 정의하고 있는 틀이다.

3) 상속은 상위클래스가 갖는 속성과 연산을 그대로 물려받는 것을 의미한다.

4) 분석과 설계, 구현 작업이 폭포수 모형과 같이 뚜렷하게 구별된다.


13. 객체 지향 기법에서 메서드는 어느 시점에 시작되는가? 4

1) 사용자 명령어가 입력될 때

2) 운영체제에 의하여 인터럽트가 감지될 때

3) 특별한 데이터 값을 만날 때

4) 오브젝트로부터 메시지를 받을 때


14. 객체에 대한 설명으로 가장 옳지 않은 것은? 2

1) 객체는 실세계 또는 개념적으로 존재하는 세계의 사물들이다.

2) 객체는 공통 특징을 갖는 클래스들을 모아둔 것이다.

3) 객체는 데이터를 가지며 이 데이터의 값을 변경하는 함수를 가지고 있는 경우도 있다.

4) 객체들 사이에 통신할 때는 메시지를 전송한다.


15. UML이란 무엇인지 설명하시오.

시스템 개발을 위한 시각적 설계 표기를 제공하는 통합 모델링 언어로, 객체지향 시스템을 개발할 때 산출물을 문서화, 

명세화, 시각화 하는데 사용되고 산출물들은 의사소통의 도구로 활용된다.


16. 객체 지향의 의미를 설명하시오. 

인가이 사고하는 방식대로 프로그램을 개발하고 현실세계에 존재하는 개념을 객체로 구성하여 객체 간 메시지를 통해

상호작용함으로써 시스템이 완성되는 개념이다.

+ Recent posts