jsp


1. 스프링 프로젝트 생성
2. 스프링 부트로 웹 서버 실행
3. 회원 도메인 개발
4. 웹 mvc 개발
5. db연동 -jdbc, jpa, 스르링 데이터 jpa
6. 테스트 케이스 작성


배포시 
C:\springStudy\hello-spring\build\libs> java -jar hello-spring-0.0.1-SNAPSHOT.jar


jsp => MVA와 템플릿 엔진

html css

클리언트, 서버 응답.

웹의 동작 (HTTP 프로토콜 이해)
HTTP는 서로 통신하기 위해서 사용된다. 
단점으로는 연결을 끊어버린다.(무상태)
 -> 정보를 유지하기 위해서  쿠키같은 기술이 등장한다.

URL(Uniform Resource Locator)
프로토콜의 종류/자원이 있는 ip, 도메인주소,포트 주소/자원의 위치


[ 웹프론트엔드 역할 ]  
 - HTML (구조 잡기)
 - CSS  (디자인 요소)
 - JavaScript  (사용자 요청에 대한 반응, 동적 제어)

개발자 도구 (F12)
html / css/ 네트워크 부분에서 javaScript를 볼 수 있다. 동적.
(새로고침해야 보임)

브라우저 : Crome같은 것.
브라우저는 월드와이드웹(WWW)에서 정보를 검색, 표현하고 탐색하기 위한 소프트웨어


figure : webkit main flow
css box model


웹서버 : Apache, Nginx, Microsoft IIS, 구글

서비스를 제공하는 서버
클라이언트는 서버에 정보를 요청하여 응답을 받은 결과를 사용.


dbms  <-> 미들웨어 <-> 클라이언트

미들웨어 종류 : was(와스) 1. 데이터베이스 접속기록 관리

(본강의에서는 웹서버를 사용하지 않고, 미들웨어만 사용한다.
와스가 재시작해야할 경우에는 웹서버가 필요하다. 그래서 대형회사에서는 웹 서버를 둔다.)

'풀스택' 카테고리의 다른 글

Python _ 나는 1일차~  (0) 2022.07.12

코로나를 끝난 후 오랜만에 온 국비 ^^ (7월 12일)

그래서 난 test9.py 부터 시작한다. 

 

 

< test9.py >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
print("Python""java")
print("Python""java", sep=" vs ", end="")
# end는 한줄 뭐시기?
print("")
 
scores = {"코딩" : 100"디자인":80"기획"70#사전형태의 데이터 key : values 중광호 이용
 
for title, score in scores.items(): #scores.items(): key : values 값을 다 가져온다. 
    print(title.ljust(5), str(score).rjust(6), sep=":") #ljust 왼쪽으로부터 공간을 얼마사용할건지.
 
for i in range(121):
    print("번호 : " + str(i))
 
번호 001 ~ 020
for i in range(1,21):
    print("번호:" + str(i).zfill(3))  #zfill 자리수 오~ 신기
cs

 

 

 

< test10.py >

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
school_recored = open("score.txt""w", encoding="UTF-8")
print("코딩 : 100"file=school_recored)
print("기획 : 90",file=school_recored)
print("설계 : 80",file=school_recored)
school_recored.close()
 
 
school_recored = open("score.txt","a", encoding="UTF-8")
school_recored.write("DB : 90\n")
school_recored.write("서버 : 80")
school_recored.close() #무조건 close() 해야한다.
 
 
school_recored = open("score.txt""r", encoding="UTF-8")  
#r 로 안바꾸면 io.UnsupportedOperation: not readable 에러남.
#print(school_recored.read()) #전체 읽어고기 ?에러뜸
print(school_recored.readline(), end=""#한줄만 불러오기
print(school_recored.readline(), end=""#한줄만 불러오기
school_recored.close()
 
school_recored = open("score.txt""r", encoding="UTF-8")
while True :    #반복문을 사용해서 한줄이용으로 전체 불러오기
    line = school_recored.readline()
    if not line:
        break
    print(line, end="")
 
 
school_recored = open("score.txt""r", encoding="UTF-8")
lines = school_recored.readlines()
for i in lines:
    print(i, end="")
school_recored.close()
 
cs
 
 
 

 

 

 

< test11.py >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#pickle 데이터 보관 문서를 만듬.
 
import pickle 
 
memo_file = open("memo.pickle""wb")  #write btye
memo = {"과목" : "코딩""점수" :88}
pickle.dump(memo, memo_file)
memo_file.close()
 
memo_file = open("memo.pickle""rb")  #읽기  {'과목': '코딩', '점수': 88}
memo = pickle.load(memo_file)
print(memo)
memo_file.close()
 
with open("memo.pickle""rb"as memo_file:
    print(pickle.load(memo_file))
 
with open("memo.txt""w", encoding="utf-8"as memo_file:
    memo_file.write("메모장입니다.")
 
with open("memo.txt""r", encoding="utf8"as memo_file:
    print(memo_file.read())
 
cs

 

< memo.py >

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
from socket import SocketIO
from tkinter import *
 
window = Tk()
window.title("메모장")
window.geometry("640x480")
 
def new_file():
    print("파일을 새로 만듭니다.")
    
def open_file():
    with open("memo.txt","r",encoding="utf8"as memo:
        txt.delete("1.0",END)
        txt.insert(END,memo.read())
 
def save_file():
    with open("memo.txt","w",encoding="utf8"as memo:
        memo.write(txt.get("1.0",END))
 
menu = Menu(window)
 
menu_f = Menu(menu,tearoff=0)
menu_f.add_command(label="새로 만들기(N)",command=new_file)
menu_f.add_command(label="새 창(W)")
menu_f.add_command(label="열기(O)...",command=open_file)
menu_f.add_command(label="저장(S)",command=save_file)
menu_f.add_command(label="다른 이름으로 저장(A)...")
menu_f.add_separator()
menu_f.add_command(label="페이지 설정(U)...")
menu_f.add_command(label="인쇄(P)...")
menu_f.add_separator()
menu_f.add_command(label="끝내기(X)",command=window.quit)
 
menu_e = Menu(menu,tearoff=0)
menu_e.add_command(label="실행 취소(U)",state="disable")
menu_e.add_separator()
menu_e.add_command(label="잘라내기(T)",state="disable")
menu_e.add_command(label="복사(C)",state="disable")
menu_e.add_command(label="붙여넣기(P)")
menu_e.add_command(label="삭제(L)")
menu_e.add_separator()
menu_e.add_command(label="Bing으로 찾기(S)...",state="disable")
menu_e.add_command(label="찾기(F)...",state="disable")
menu_e.add_command(label="다음 찾기(N)",state="disable")
menu_e.add_command(label="이전 찾기(V)",state="disable")
menu_e.add_command(label="바꾸기(R)...")
menu_e.add_command(label="이동(G)...")
menu_e.add_separator()
menu_e.add_command(label="모두 선택(A)")
menu_e.add_command(label="시간/날짜(D)")
 
menu_o = Menu(menu,tearoff=0)
menu_o.add_checkbutton(label="자동 줄 바꿈(W)")
menu_o.add_command(label="글꼴(F)...")
 
menu_v = Menu(menu,tearoff=0)
 
menu_v_1 = Menu(menu_v,tearoff=0)
menu_v_1.add_radiobutton(label="확대(Ctrl+더하기)")
menu_v_1.add_command(label="축소(Ctrl+빼기)")
menu_v_1.add_command(label="확대하기/축소하기 기본값 복원(Ctrl+0)")
 
 
menu_v.add_cascade(label="확대하기/축소하기", menu=menu_v_1)
menu_v.add_checkbutton(label="상태 표시줄(S)")
 
menu_h = Menu(menu,tearoff=0)
menu_h.add_checkbutton(label="도움말 보기(H)")
menu_h.add_command(label="피드백 보내기(F)")
menu_e.add_separator()
menu_e.add_command(label="메모장 정보(A)")
 
 
menu.add_cascade(label="파일(F)", menu=menu_f)
menu.add_cascade(label="편집(E)", menu=menu_e)
menu.add_cascade(label="서식(O)", menu=menu_o)
menu.add_cascade(label="보기(V)", menu=menu_v)
menu.add_cascade(label="도움말(H)", menu=menu_h)
 
scrollbar = Scrollbar(window)
 
txt = Text(window,yscrollcommand=scrollbar)
txt.pack(fill="both", expand=True, side="left")
 
scrollbar.pack(side="right", fill="y")
scrollbar.config(command=txt.yview)
 
window.config(menu=menu)
window.mainloop()
 
cs

 

 

< image.py >

 

 

 

'풀스택' 카테고리의 다른 글

웹프로그래밍  (0) 2022.08.06

 

1. Stack, Last in First Out (LIFO) : 마지막에 들어온 값이 첫번째로 나간다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Stack;
 
public class StackTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[] stackArray = {"벤츠""아우디""현대""bmw""람보르기니"};
        
        Stack<String> stack = new Stack<String>();
        for(String carName : stackArray) {
            stack.push(carName);
        }
        
        while(!stack.isEmpty()) {
            //isEmpty : Collection 인터페이스에서 제공
            //요소가 없으면 true 반환
            
            System.out.println(stack.pop());
        }        
    }
}
cs

 

<결과값>


 

2. Queue, First In First Out(FIFO) : 첫번째로 나온 값이 첫번째로 나간다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.LinkedList;
 
public class QueueTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[] QueueArray = {"개나리""난초""코스모스""장미"};
        
        LinkedList<String> queue = new LinkedList<String>();
        
        for(String flower : QueueArray) {
            queue.offer(flower);
        }
        System.out.println("queue의 크기" + queue.size());
        
        String data = " ";
        while((data = queue.poll()) != null) {
            System.out.println(data);
        }
        System.out.println("queue의 크기: " + queue.size() ); //while에서 다씀.
 
    }
}
cs

<결과 창>

'풀스택 > java' 카테고리의 다른 글

Java_ HashSet + Lotto  (0) 2022.04.29
String에서 제공하는 메소드들  (0) 2022.04.29
자바_ Eclipse 단축키 모음  (0) 2022.04.19
자바_인터페이스 예제 Car  (0) 2022.04.19
자바_ 부모자식 클래스 상속 ~ 다형성까지  (0) 2022.04.14
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.HashSet;
import static java.lang.System.out;
 
public class HashSetTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[] nationArray = {"미국""영국""캐나다""대한민국""미국"};
        
        HashSet<String> hs1 = new HashSet<String>();
        HashSet<String> hs2 = new HashSet<String>();
        
        for(String nation : nationArray) {
            if(!hs1.add(nation)) {
                //add : Collection 인터페이스에 정의되어 있다. 
                //요소추가가 성공하면 true로 반환.
                hs2.add(nation); //중복값 들어감.
            }
        }
        out.println("hs1 : " + hs1);
        out.println("hs2 : " + hs2);
        
        hs1.removeAll(hs2); //hs1에 hs2(미국)을 제거.
        out.println("hs1 : " + hs1);
        out.println("hs2 : " + hs2);
 
    }
}
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
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
 
public class HashSetLotto {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HashSet<Integer> hashSet = new HashSet<Integer>();
                
        for(int i =0; hashSet.size() <6; i++) {
            //size()
            //Collection 인터페이스에서 제공하는 클래스 
            //컬렉션에 저장된 요소개수를 반환
            int num = (int)(Math.random()*45+1 ; //1~45
            //컬렉션에는 객체타입만 들어갈 수 있다. 
            //AutoBoxing 되면서 추가
            hashSet.add(num); //중복제거            
        }
        //set은 정렬 기능 없다. 
        List<Integer> list = new LinkedList<Integer>(hashSet);
        Collections.sort(list);
        System.out.println(list);
 
    }
}
cs

 

--

Hashset 아닌 TreeSet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.TreeSet;
 
public class TreeSetLotto {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        TreeSet treeSet = new TreeSet();
        
        for(int i =0; treeSet.size() <6; i++) {
            //size()
            //Collection 인터페이스에서 제공하는 클래스 
            //컬렉션에 저장된 요소개수를 반환
            int num = (int)(Math.random()*45+1 ; //1~45
            //컬렉션에는 객체타입만 들어갈 수 있다. 
            //AutoBoxing 되면서 추가
            treeSet.add(num); //중복제거            
        }
        System.out.println(treeSet);
    }
}
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
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
//String에서 제공하는 메소드를 살펴보자. (api)
public class StringTest4 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String source1 ="aaabbbcccdddeeefffaaabbbcccdddeeefff";
        String source2 ="AAAbbbcccdddeeefffaaabbbcccdddeeefff";
        
        //char charAt(int index)
        //인자값으로 지정된 인덱스 위치의 문자 하나 반환
        System.out.println("원본문자열 : " +source1 );
        System.out.println("첫번째 문자  : source1.charAt(0) : "
                 +source1.charAt(0) );
        System.out.println("네번째 문자  : source1.charAt(0) : "
                +source1.charAt(3) );
        
        //int indexOf(String searchStr)
        //인자로 지정된 문자열을 원본문자열에서 검색해서 문자열이 존재하는
        //인덱스 번호를 반환
        System.out.println("aaa 문자열의 인덱스 번호 : " 
                + source1.indexOf("aaa"));
        
        //int lastIndexOf(String searchStr)
        //인자로 지정된 문자열을 원본문자열에서 뒤에서부터 검색해서 
        //문자열이 존재하는 인덱스 번호를 반환
        System.out.println("aaa 문자열의 인덱스 번호 : " 
                + source1.lastIndexOf("aaa"));
        
        //String substring(int startIndex)
        //startIndex 문자부터 마지막 문자까지 반환
        System.out.println("네번째 문자부터 마지막문자까지 추출  : source1.substring(3) : "
                +source1.substring(3) );
        
        //String substring(int startIndex, int endIndex)
        //startIndex 문자부터 endIndex -1 문자까지 반환
        System.out.println("네번째 문자부터 6번째문자까지 추출  : source1.substring(3,6) : "
                +source1.substring(3,6) );
        
        //String replace(String oldStr, String newStr)
        //oldStr을 newStr로 치환해줌
        System.out.println("원본문자열에서 aaa를 ggg로 변경 : " +
                source1.replace("aaa""ggg"));
        
        //boolean endsWith(String endStr)
        //문자열이 인자로 지정된 문자열로 끝나는지 판단
        //주로 확장자 확인할때 사용됨
        System.out.println("원본문자열이 fff로 끝나는지 확인 : "
                + source1.endsWith("fff"));
        
        //boolean startsWith(String startStr)
        //문자열이 인자로 지정된 문자열로 시작되는지 판단
        System.out.println("원본문자열이 aaa로 시작되는지 확인 : "
                + source1.startsWith("aaa"));
        
        //boolean contains(String searchStr)
        //원본문자열에 인자로 지정한 문자열이 포함되어 있는지를 판단
        System.out.println("원본문자열에 bbb문자열이 있는지 판단: " + source1.contains("bbb"));
        
        //int length()
        //문자열의 길이 반환
        System.out.println("원본문자열의 길이 : " + source1.length());
        
        //boolean equals(String str) '대소문자'를 구분하여서 문자열 비교
        System.out.println("source1 과 source2를 대소문자를 구분하여 비교: source1.equals(source2) :" 
                + source1.equals(source2));
        
        //boolean equalsIgnoreCase(String str)  '대소문자'를 구분하지 않고 문자열 비교
        System.out.println("source1 과 source2를 대소문자를 구분하여 비교: source1.equalsIgnoreCase(source2) :" 
                + source1.equalsIgnoreCase(source2));
        
        //String toUpperCase() 대문자로 변경
        System.out.println("source1을 대문자로 변경 : " + source1.toUpperCase());
        
        //String toLowerCase() 소문자로 변경
        System.out.println("source2을 소문자로 변경 : " + source2.toLowerCase());
        
        //String[] split(String delims) delims(인자)를 기준으로 원본문자열을 쪼갠다. 
        String source3 = "aaa,bbb,ccc";
        System.out.println(source3);
        String[] splitStrArray = source3.split(","); //,를 기준으로 분리된다. 
        System.out.println("");
        
        for(String str : splitStrArray) {
            System.out.println(str);
        }
        System.out.println();
        
        //String trim() 공백제거
        String source4 = " java ";
        System.out.println("원본문자열: '" + source4 + "'");
        System.out.println("공백제거후 source4 문자열 : source4.trim() : '"
                + source4.trim() + "'");    
        
        
        
        
        
    }
}
 
cs

'풀스택 > java' 카테고리의 다른 글

Java _ Stack 과 Queue 이해  (0) 2022.04.29
Java_ HashSet + Lotto  (0) 2022.04.29
자바_ Eclipse 단축키 모음  (0) 2022.04.19
자바_인터페이스 예제 Car  (0) 2022.04.19
자바_ 부모자식 클래스 상속 ~ 다형성까지  (0) 2022.04.14

<Eclipse 단축키>

- Ctrl + Shift  + F - 소스 코드 자동 정리
- Ctrl + F11 - 실행(디버깅)
- Ctrl + Space - 입력 보조 장치 강제 호출 → 입력하는 도중에 언제라도 호출 가능
- Ctrl + D - 한 줄 삭제
- Ctrl + I - 들여쓰기 자동 수정
- Ctrl + Shift + '/' - 블록 주석(/* */)
- Ctrl + Shift + '\' - 블록 주석 해제
- Ctrl + '/' - 주석(//)
- Ctrl + F6 - Editor 창간의 이동
- Ctrl + 1 - 빠른 교정, 문맥에 맞게 소스 교정을 도와줌. 
               (클래스, 메소드를 필요한 위치에 자동 생성해줌)
- Ctrl + Shift + O - imoort문 자동 생성
- F6 - 디버깅 한줄씩 실행(step over)
- Alt + UP, Alt + Down - 줄바꿈, 해당 라인을 위아래로 이동
- Ctrl + Alt + Down - 복사 후 아래 붙여넣기
- Alt + Shift + UP - 블록 설정, 소스 코드를 블록단위로 설정
- Alt + Shift + Down - 블록 해제, 소스 코드를 블록단위로 해제

- Alt + Shift + x -> j  - 코드 실행.
- Ctrl + Shift + T - 클래스 찾기
- Shift + Alt +S → Generate Gettes and Setters - 
                           변수 get/set 함수생성, 여러개를 한번에 생성할 수 있음
- Ctrl + F -> 해당 단어 찾아서 치환



- F2 : Rename 이름변경

'풀스택 > java' 카테고리의 다른 글

Java_ HashSet + Lotto  (0) 2022.04.29
String에서 제공하는 메소드들  (0) 2022.04.29
자바_인터페이스 예제 Car  (0) 2022.04.19
자바_ 부모자식 클래스 상속 ~ 다형성까지  (0) 2022.04.14
자바 _ 상속관련 내용  (0) 2022.04.11

<문제>

interface: Speed

             필드명:   int SPEED= 10;

             메소드:   void upSpeed(int inc); //입력받은 속도가 양수인 경우

            voie downSpeed(int dec);    / //입력받은 속도가 음수인 경우

            void stop(); //입력받은 속도가 0 인 경우

interface: Display

             메소드 :  void  disp();         //계산,출력

class:Car

          필드명 : int inputVelocity;                 //입력받을속도

           int velocity;            //현재속도

          메소드 : void input();            //속도를 입력받고 disp()

Car 클래스를  Speed, Display  구현 받아서 처리

<**입.출력**>

속도입력 :  50

현재속도는  60km/h 입니다.

속도입력 : -20

현재속도는 40km/h 입니다.

속도입력 : -40

정지하셨습니다.

 

 

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
import java.util.Scanner;
 
interface Speed{
    int SPEED = 10;
    void upSpeed(int inc);
    void downSpeed(int dec);
    void stop(); //입력속도 0인 경우
}
interface Display extends Speed{
    void disp();
}
class Cars implements Display {
 
    
    int inputVelocity;//입력받을속도
    int velocity = SPEED;            //현재속도
    //void input();            //속도를 입력받고 disp() 
    
 
    @Override
    public void disp() {
        if(velocity < 0 ) {
            stop();
        }
        if(inputVelocity >0) {
            upSpeed(inputVelocity);
        }
        else {
            downSpeed(inputVelocity);
        }
        
    }
    
    @Override
    public void upSpeed(int inc) {
        velocity +=inc;
        System.out.println("현재 속도는 " + velocity +"km/h입니다." );
        
    }
 
    @Override
    public void downSpeed(int dec) {
        // TODO Auto-generated method stub
        velocity +=dec;
        System.out.println("현재 속도는 " + velocity +"km/h입니다." );
        
    }
 
    @Override
    public void stop() {
        // TODO Auto-generated method stub
        System.out.println("정지하셨습니다.");
    }
 
    
}
 
public class Car_1{
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int inputVelocity;
        Cars car = new Cars();
        
        while(true) {
            System.out.println("속도 입력: ");
            car.inputVelocity = scanner.nextInt();
            
            
            car.disp();
            
            if (car.velocity <=0) {
                car.stop();
                break;
            }
        }
        
    }        
    
}
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
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
 
import java.util.Scanner;
 
interface Speed{
    int SPEED = 10;
    void upSpeed(int inc);
    void downSpeed(int dec);
    void stop(); //입력속도 0인 경우
}
interface Display extends Speed{
    void disp();
}
 
class car11 implements Speed, Display{
    int inputVelocity;
    int velocity = Speed.SPEED;
    void input() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("속도 입력: ");
        inputVelocity = scanner.nextInt();
    };
    @Override
    public void disp() { 
        // TODO Auto-generated method stub
        //속도 계산
        if(inputVelocity >=0) {
            upSpeed(inputVelocity);
        }
        else {
            downSpeed(inputVelocity);
        }
        
        //출력
        if(velocity <= 0) {
            stop();
        }
        else {
            System.out.println("현재 속도는 " + velocity +"km/h입니다.");
        }
    }
    @Override
    public void downSpeed(int dec) {
        // TODO Auto-generated method stub
        velocity += dec; // +하는 이유 -로 넘어오기 때문에
        
    }@Override
    public void stop() {
        // TODO Auto-generated method stub
        System.out.println("정지하셨습니다.");
        
    }@Override
    public void upSpeed(int inc) { //up, down따로 만들필요없었다..?
        // TODO Auto-generated method stub
        velocity += inc;
        
    }
//여기에 Override 안쓰면 car11에 빨간줄 뜸.
 
public class Car_1_correctanswer {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        car11 car = new car11();
        boolean stop = false;
        
        while(!stop) {
            car.input();
            if(car.velocity <=0) {
                stop = true;
            }
        }
 
    }
}
 
cs

'풀스택 > java' 카테고리의 다른 글

String에서 제공하는 메소드들  (0) 2022.04.29
자바_ Eclipse 단축키 모음  (0) 2022.04.19
자바_ 부모자식 클래스 상속 ~ 다형성까지  (0) 2022.04.14
자바 _ 상속관련 내용  (0) 2022.04.11
자바 메소드, 함수  (0) 2022.04.06

부모 클래스 : Person2

자식 클래스 : President, Student, Employee1

 

위에 클래스를 응용하는 메인 클래스 : CastingTest

 

 

<부모 클래스>

1
2
3
4
5
6
7
8
9
10
11
12
public class Person2 {
 
    String name;
    int age;
    String addr;
    int x = 10;
    
    void showSleepingStyle() {
        System.out.println("일반사람들의 수면 스타일은 다양하다.");
    }
}
 
cs

 

<자식 클래스>

 

1
2
3
4
5
6
7
8
9
10
public class President extends Person2{
    String nation;
    int salary;
    
    @Override //show+ ctrl space
    void showSleepingStyle() {
        // TODO Auto-generated method stub
        System.out.println("대통령은 과도한 업무로 항상 수면시간이 부족하다.");
    }
}
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Student extends Person2{
    String schoolKind;
    int grade;
    
    @Override
    void showSleepingStyle() {
        // TODO Auto-generated method stub
        System.out.println("학생들의 수면스타일은 규칙적이다.");
    }
    
    //부모클래스에 정의되어있지않고 자식클래스에만 정의된 메소드
    public void study() {
        System.out.println("공부를 한다.");
    }
}
cs
1
2
3
4
5
6
7
8
9
10
public class Employee1 extends Person2 {
    String department;
    int x =30;
    
    @Override
    void showSleepingStyle() {
        // TODO Auto-generated method stub
        System.out.println("직장인은 잦은 회식으로 수면시간이 부족하다."); 
    }
}
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
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
public class CastingTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        President president1 = new President();
        
        //1. 자식클래스 타입의 객체(객체를 가리키는 레퍼런드 값)를
        //부모클래스 타입의 레퍼런스 변수에 할당하면
        Person2 person2 = president1;
        
        //2. 부모 클래스 타입의 객체(객체를 가리키는 레퍼런드 값)를
        //자식클래스 타입의 레퍼런스 변수에 할당하면
        //President president2 = person2; //컴파일 오류남.
        //명시적인 캐스팅(down)이 필요하다.
        if(person2 instanceof President) {
            President president2 = (President)person2;
        }
        //President president2 = (President)person2;
        
        //3. 자바에서는 부모타입의 레퍼런스 변수가 자식클래스객체를 참조할 수 있지만
        //자식 클래스 타입의 레퍼런스 변수가 부모객체를 참조할 수는 없다. 
        Person2 person3 = new Person2();
        
        if(person2 instanceof President) {
            President president3 = (President)person2;
        }
        else {
            System.out.println("캐스팅 불가.");
        }
        
        //다운캐스팅을 할때는 다운캐스팅을 할 수 있는 지를 판단해야한다. 
        //이때 사용되는 연산자가 instanceof
        
        //4.자바에서 캐스팅을 부모클래스와 자식클래스 간에서만 가능하다. 
        Student student1 = new Student();
        //President president4 = (President)student1;
        
        //5. 부모 클래스에는 정의되지 않고 자식클래스에만 정의된 메소드는 부모클래스를 통해서 호출할 수 없다. 
        Person2 person4 = new Student();
        //person4.study(); //이럴 경우에 다운 메서드를 사용해야한다. 
        Student student2 = (Student)person4; 
        student2.study(); //"공부를 한다."
        
        //6. 부모 클래스에 정의된 클래스를 자식클래스에서 오버라이딩 했을때
        // 부모 클래스 타입의 레퍼런스 변수로 해당 메소드를 호출하면 항상 해당 객체에 오버라이딩된 객체가 출력된다.
        // 즉, 메소드의 다형성이 제공된다. 
        Person2 person5 = new Student();
        person5.showSleepingStyle();
        person5 = new President();
        person5.showSleepingStyle();
        person5 = new Employee1();
        person5.showSleepingStyle();
        
        //7. 변수
        //자바에서 호출되는 변수는 컴파일 타입에 결정됨. 
        //즉, 레퍼런스 변수 타입에 정의된 변수가 호출됨.
        Person2 person6 = new Employee1();
        System.out.println("person6.x = " + person6.x );
        
        Employee1 employee1 = (Employee1)person6;
        System.out.println("employell.x = " + employee1.x);
    }
}
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
//다형성
 
//요구사항
//만약 사람중에 학생이면 study() 메소드를 호출하라. (instansof)
class PersonInfo {
    void printSleepingStyle(Person2 person) {
        if(person instanceof Student) {
            Student student = (Student)person;
            student.study();
        }
        person.showSleepingStyle();
    }
}
public class ParameterPloyTest1 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        PersonInfo personInfo = new PersonInfo();
 
        personInfo.printSleepingStyle(new Student());
        personInfo.printSleepingStyle(new President());    
        personInfo.printSleepingStyle(new Employee1());
    }
}
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
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
 
//가전제품 구매 
 
class Gajun{
    
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return "Gajun";
    }
}
 
class Tv extends Gajun{
    @Override
    public java.lang.String toString() {
        // TODO Auto-generated method stub
        return "Tv";
    }
}
 
class Computer extends Gajun{
    @Override
    public java.lang.String toString() {
        // TODO Auto-generated method stub
        return "Computer";
    }
}
class dryir extends Gajun{
    @Override
    public java.lang.String toString() {
        // TODO Auto-generated method stub
        return "dryir";
    }
}
 
class Buyer{
    //현재까지 주문한 목록을 보여줘라.
    Gajun[] gajunArray = new Gajun[3];
    int index = 0;
    void order(Gajun gajun) {
        gajunArray[index++=gajun;
        System.out.println(gajun + "를 주문했습니다.");
    }
    
    void showOrderList() {
        String orderItem = "";
        for (int i = 0; i < gajunArray.length; i++) {
            orderItem += (i == 0)? gajunArray[i] : "," +gajunArray[i];
        }
        System.out.println("주문목록 : " + orderItem);
    }
}
 
public class ParameterPloyTest2 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Buyer buyer = new Buyer();
        buyer.order(new Tv());
        buyer.order(new Computer());
        buyer.order(new dryir());
        
        buyer.showOrderList();
    }
}
cs

<출력결과>

'풀스택 > java' 카테고리의 다른 글

자바_ Eclipse 단축키 모음  (0) 2022.04.19
자바_인터페이스 예제 Car  (0) 2022.04.19
자바 _ 상속관련 내용  (0) 2022.04.11
자바 메소드, 함수  (0) 2022.04.06
7일차_조건, 반복문 예제  (0) 2022.04.04
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
//this()
//자기 자신 클래스의 다른 생성자를 호출
//여러개의 생성자에서 공통적으로 수행해야하는 작업을 특정 생성자에만 정의해서 중복코드를 제거 
 
//요구사항
//음료수 클래스를 정의한다.
//속성은 음료수명과 가격이 있다. 음료수명은 기본값이 물, 800원.
 
//this()를 사용하는 규칙
//1. this()는 생성자의 첫번째 실행문으로 사용되어야 한다. 
//2. this()는 recursive call 지원 안함. 
 
class Drink{
    String name;
    int price;
    
    public Drink() { //생성자는 그냥 공백에서 Ctrl+space -> enter
        // TODO Auto-generated constructor stub
        this("물, 800");    
    }
    public Drink(int price) { 
        // TODO Auto-generated constructor stub
        this("물, pirce");
        /*
         * this.name = "물"; this.price = price;
         */    
    }
    public Drink(String name, int price) { 
        // TODO Auto-generated constructor stub
        this("name, 800");    
    }
    public Drink(String name) { 
        // TODO Auto-generated constructor stub
        //this(name, price) //recursive call
        this.name = "name";
        this.price = price;        
    }
}
public class ThisConstructorTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
    }
 
}
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//상속.
//상속은 물려주는 것. 
//부모 클래스를 확장한다.
//오버라이딩 = 재정의한다. 
 
class Parent{
    int parentVar;
    
    void ParentMethod() {
        System.out.println("parent method");
    }
}
 
class Child extends Parent{
    int childVar;
    
    void childMethod() {
        System.out.println("child method");
    }
}
class GrandChild extends Child{
    int grandVar;
    
    void grandMethod() {
        System.out.println("grand method");
    }
}
 
public class ExtendsTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Child child = new Child();
        child.childMethod();
        child.ParentMethod();
        
        System.out.println("child.parentVar ="+ child.parentVar);
        System.out.println("child.childvar = " + child.childVar);
        GrandChild grandChild = new GrandChild();
        System.out.println("grandChild.parentVar = "+ grandChild.parentVar);
        System.out.println("grandChild.childVar = "+ grandChild.childVar);
        System.out.println("grandChild.grandVar = "+ grandChild.grandVar);
        
        grandChild.ParentMethod();
        grandChild.childMethod();
        grandChild.grandMethod();
    }
}
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
//자바에서 부모클래스에 정의된 정의나 메소드를 자식 클래스에서 재정의하면
//부모 클래스에서 정의한 변수나 메소드는 은폐된다. 
class OverridingParent{
    int money =100;
    
    public void parentMethod() {
        System.out.println("parent method");
    }
}
 
class OverridingChild extends OverridingParent{
    String money = "500원";
    
    @Override //코드상에 설정을 할 수 있는 기능. 아래에 정의하는 메소드가 부모클래스에 정의되는 메소드를 
오버라이딩하는 메소드라는 의미.
    public void parentMethod() {
        // TODO Auto-generated method stub
        System.out.println("overriding method");
    }
}
public class OveerridingTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        OverridingChild overridingChild = new OverridingChild();
        overridingChild.parentMethod();
        
        overridingChild.money ="100원";
    }
}


cs
 
   

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Employee{
    
    String name;
    String department;
    int salary;
    
    String getInformation() {
        return "이름 : " + name + ", 부서: " + department + ", 급여: " + salary;
    }
}
 
class Salesman extends Employee{
    int commisstion;
    
    String getInformation() {
        /*//밑에 방법이 더 간단.
         * return "이름 : " + name + ", 부서: " + department + ", 급여: " + salary + "수당: " +
         * " commission";
         */        
        return super.getInformation() + ", 수당:" +commisstion;
    }    
}
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
class Super {
    String name = "홍길동";
}
class Sub extends Super{
    String name = "김영희";
    
    String getLoclaName() {
        String name = "김철수";
        return name;
    }
    String getThisName() {
        String name = "김철수";
        return this.name; //위에 name이 있기에 this를 사용함. 로컬변수가 위에 있으므로 멤버변수를 사용하기 위해서 this사용.
    }
    String getSuperName() {
        String name = "김철수";
        return super.name; 
    }
}
public class ThisSuperTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Sub sub = new Sub();
        System.out.println("sub.getLocalName = " + sub.getLoclaName() );
        System.out.println("sub.getThisName = " + sub.getThisName() );
        System.out.println("sub.getSuperName = " + sub.getSuperName() );
    }
}
cs

'풀스택 > java' 카테고리의 다른 글

자바_인터페이스 예제 Car  (0) 2022.04.19
자바_ 부모자식 클래스 상속 ~ 다형성까지  (0) 2022.04.14
자바 메소드, 함수  (0) 2022.04.06
7일차_조건, 반복문 예제  (0) 2022.04.04
2일차 _ 이클립스 다운방법  (0) 2022.03.29

+ Recent posts