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와 템플릿 엔진
풀스택
- jsp 2022.08.06
- 웹프로그래밍 2022.08.06
- Python _ 나는 1일차~ 2022.07.12
- Java _ Stack 과 Queue 이해 2022.04.29
- Java_ HashSet + Lotto 2022.04.29
- String에서 제공하는 메소드들 2022.04.29
- 자바_ Eclipse 단축키 모음 2022.04.19
- 자바_인터페이스 예제 Car 2022.04.19
- 자바_ 부모자식 클래스 상속 ~ 다형성까지 2022.04.14
- 자바 _ 상속관련 내용 2022.04.11
jsp
웹프로그래밍
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 |
---|
Python _ 나는 1일차~
코로나를 끝난 후 오랜만에 온 국비 ^^ (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(1, 21):
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 >
Java _ Stack 과 Queue 이해
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 |
Java_ HashSet + Lotto
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 |
'풀스택 > java' 카테고리의 다른 글
Java _ Stack 과 Queue 이해 (0) | 2022.04.29 |
---|---|
String에서 제공하는 메소드들 (0) | 2022.04.29 |
자바_ Eclipse 단축키 모음 (0) | 2022.04.19 |
자바_인터페이스 예제 Car (0) | 2022.04.19 |
자바_ 부모자식 클래스 상속 ~ 다형성까지 (0) | 2022.04.14 |
String에서 제공하는 메소드들
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 단축키 모음
<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 |
자바_인터페이스 예제 Car
<문제>
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 |