티스토리 뷰

학습정리-11-16.txt
0.00MB

1.캡슐화에 대하여 설명하시오.

소프트웨어의 최종 목적!

→ 프로그램 잘 짜는 것을 뜻한다.

즉, 최종 소비자(최고 고객 = 마지막으로 라이브러리 갖다 쓰는 주체)가 최대한 사용하기 쉽게 프로그램(라이브러리, 프레임 워크) 만드는 것이다.

 

이미 만들어지 클래스를 새로운 클래스를 만들어 한번더 감싸서 캡슐화 시킨다.

→ 이미 있는 클래스들을 새로운 클래스를 만들어서 그 안에 객체 생성, 함수 호출하도록 한다??

 

이렇게 하면 사용할 때는 새로운 클래스만 사용하면 된다. 이전에는 각각의 클래스를 따로 객체 생성, 호출하는 번거로운 과정을 거쳐야 했다는데 그런 불편함이 없어지고 훨씬 간결한 코드가 된다.

 

ex) 각각의 치료 효과를 가진 약들을 하나의 캡슐안에 넣어 이 캡슐 하나만 먹음으로써 여러 약을 따로따로 먹을 때 지켜야하는 복용법, 복용 순서등 번거로운 과정을 거칠 필요가 없다!

 

 


2.채팅 프로그램을 구현하시오.

서버

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
 
class Receiver extends Thread{
    Socket socket;
    DataInputStream in;
    String name;
    
    Receiver(Socket socket){
        this.socket = socket;
        try {
            in = new DataInputStream(socket.getInputStream());
        } catch (Exception e) {
            
        }
    }
    
    public void run() {
        Scanner scanner = new Scanner(System.in);
        
        while(in != null) {
            try {                // 상대방이 입력한 데이터를 기다렸다 받는다.
                                // (상대방이 입력하고 엔터를 때린 데이터)
                System.out.println(in.readUTF());
            } catch (Exception e) {
                
            }
        }
    }
    
}
 
class Sender extends Thread{
    Socket socket;
    DataOutputStream out;
    String name;
    // BufferedOutputStream bout;
    // 버퍼 스트림 있으면 더 좋다.
    
    Sender(Socket socket){
        this.socket = socket; // 전화기라 통신에 관련된 모든 것을 가지고 있다. 
        try {
            // bout = new BufferedOutputStream(socket.getOutputStream());
            out = new DataOutputStream(socket.getOutputStream());
            // 보조 스트림 꺼내기(빨대 꽂기)
             
            name = "["+socket.getInetAddress()+":"+socket.getPort()+"]";
            // 소켓에 있는 함수들!
        } catch (Exception e) {
            
        }
    }
    
    public void run() {
        Scanner scanner = new Scanner(System.in);
        
        while(out != null) {
            try {
                // 스캐너가 클라이언트의 입력을 계속 기다리고 있음
                out.writeUTF(name + scanner.nextLine());
                // 채팅 창에 쓴 내용을 보내기 위해 nextLine. 엔터치면 입력 완료되는 형태
            } catch (Exception e) {
                
            }
        }
    }
    
}
 
 
public class TcpIpServer {
 
    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        Socket socket = null;
        try {
            // 포트 번호 7777, 전화기 생성.
            // 7777번호를 만들어 거기서 기다리겠다는 의미. 
            serverSocket = new ServerSocket(7777);
            // 프로그램 번호 7777
            
            socket = serverSocket.accept();
            // 기다리는 소스
            // accept 함수 안에서 while문으로 무한 루프를 돌고 있다.
            // 클라이언트가 들어오게 되면 그때부터 socket이 서버와 클라이언트 사이에 빨대를 꽂는다.
            // (전화기를 끌고 온다...?) (I/O stream 실행)
            // 소켓은 통신을 위한 모든 것을 다 가지고 있다.
            
            Sender   sender   = new Sender(socket);
            // 
            Receiver receiver = new Receiver(socket);
 
            sender.start();
            receiver.start();
            // 만약에 쓰레드가 아니면...(run()함수로 바로 실행하게 되면)
            // 동시에 프로그램을 실행시키지 못해서 무한 루프에서 빠져 나오지 못한다.
        
        } catch (Exception e) {
            
        }
 
    }
 
}
cs

 

 

 

클라이언트

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
import java.net.Socket;
 
 
public class TcpIpClient {
 
    public static void main(String[] args) {
        String serverIP = "127.0.0.1"// 자기 자신 IP 주소
        // 접속할 IP 주소를 적는다.
        Socket socket = null;
        try {
            
            socket = new Socket(serverIP, 7777);
            // 내 서버 찾아가서 7777을 불러온다..???
            // 클라이언트는 기다릴 필요가 없어서 전화기에 바로 번호를 넣기만 하면 된다??
            // 서버 주소를 찾는 과정은 상당히 복잡한 과정을 거치게 된다...
            
                        
            System.out.println("서버에 연결되었습니다.");
            
            Sender   sender   = new Sender(socket);
            Receiver receiver = new Receiver(socket);
 
            sender.start();
            receiver.start();
        
        } catch (Exception e) {
            
        }
 
    }
 
}
cs

 

 

 

 


3.JSP 로 헬로 월드를 나오게 하시오.

jsp를 사용하려면 먼저 톰캣을 설치해야한다.

설치과정은 https://youtu.be/0cy1Oa-2DQg 을 참고!

1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
    Hello World
</body>
</html>
cs

→.jsp 파일을 생성(반드시 src > main > webapp 폴더에 생성해야한다.)하고 body 태그 안에 내용 입력!

 

출력

 


내일 진척도 문제

27번
//ABCD 입력 하게되면 
//DCBA 출력

 

charat  사용

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
import java.util.Scanner;
 
 
public class PracTest2 {
    
    public static void main(String[] args) {
        
        /*Scanner sc = new Scanner(System.in);
        String abcd = sc.next();
        
        char ch = sc.next().charAt(0);
        
        for(int i = 0; i < abcd.length(); i++) {
            System.out.println(abcd.charAt(i));
        }
        */
        
        Scanner sc = new Scanner(System.in);
        
        String str = sc.next();
        
        for(int i = str.length() - 1; i >= 0; i--) {
            System.out.print(str.charAt(i));
        }
        
        
    }    
}
cs

 

substring 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;
 
public class Test {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("문자를 입력하세요. >> ");
        String text = sc.next();
        
        for(int i = (text.length() - 1); i >= 0; i--) {        
            System.out.print(text.substring(i, i + 1));
        }
        
            
    }
}
cs

 

 


60번문제. JSP 로 헬로 월드를 나오게 하시오.



59번 문제
채팅 프로그래밍을 구현하시오

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함