국비 15일차_2

강지수·2024년 1월 4일
0

국비교육

목록 보기
29/97

제한이 없는 제너릭

package com.tech.gt007.gen;

import java.util.Arrays;
import java.util.List;

class MyList2{
	public static void printList(List<?> list) {
		for (Object elem : list) {
			System.out.print(elem+" ");
		}
		System.out.println();
	}
}
//	제한이 없는 제너릭
public class GenericTest2 {
	public static void main(String[] args) {
		List<Object> li=Arrays.asList(1,2,3,4,5);
		List<String> ls=Arrays.asList("one","two","three");
		List<Object> lo=Arrays.asList("one","two","three");
//		메소드 호출
		MyList2.printList(li);
		MyList2.printList(ls);
		MyList2.printList(lo);
	}
}

결과

1 2 3 4 5 
one two three 
one two three 

하한이 있는 제너릭

package com.tech.gt007.gen;

import java.util.Arrays;
import java.util.List;

class MyList3{
	public static void printList(List<?> list) {
		for (Object elem : list) {
			System.out.print(elem+" ");
		}
		System.out.println();
	}
}
//	하한이 있는 제너릭
public class GenericTest3 {
	public static void main(String[] args) {
		List<Object> li=Arrays.asList(1,2,3,4,5);
		List<String> ls=Arrays.asList("one","two","three");
		List<Number> ln=Arrays.asList(1,2,3,4,5);
		List<Double> ld=Arrays.asList(1.1,2.2,3.3,4.4,5.5);
//		메소드 호출
		MyList3.printList(li);
		MyList3.printList(ls);
		MyList3.printList(ln);
		MyList3.printList(ld);
	}
}

결과

1 2 3 4 5 
one two three 
1 2 3 4 5 
1.1 2.2 3.3 4.4 5.5 

슈퍼키워드

super 키워드로 Number 을 넣으면

String, Double 타입은 오류가 난다.

만약 Double을 넣으면 String 만 오류가 난다.


CRUD


SQL


Oracle SQL Developer

hr 접속

data Table 에 있는 data들


select * from jobs;

이런 걸 query 라고 한다.
web에서 data를 가져오고, 추가하고, 수정하는 등의 명령

query 가 필요한 이유 : 직접 datatable 을 보는 게 아니라 명령을 통해 작업하기 때문에. (java 코드에 sql을 코딩해야하기 때문)


Table SAMPLE 만들기


같은 이름의 table 은 생성할 수 없음.


Table 삭제하기

drop 명령어를 사용한다. (delete, remove 아님)


field : 열 (column) = 어트리뷰트(DB)
ex)
record : 행 = 튜플(DB)
ex) record 1 : '200511201 / 김철수 / 컴퓨터 / 남 / 85'


데이터 삽입 (추가)


데이터 조회


여러 개의 data 삽입


데이터 수정

원하는 데이터만 수정


데이터 저장
commit 을 해야 db로 완전한 저장이 완료된다.


데이터 삭제


이게 CRUD query 이다.

Create
Read
Update
Delete


Oracle SQL 미션
테이블 이름 : leeddr
칼럼이름 : lname, laddr ...

data (키 : number, 나머지 : varchar2)

결과


Oracle DB 교재를 받음.

Do it 자바 책으로 독학했었는데, 역시 Do it 시리즈가 괜찮긴 한 것 같음.


저장


접속 해제


접속 해제 시 변경사항이 있었다면 뜨는 경고문구, 커밋하면 됨.


Linux 미션
GenericMethodTest 클래스 출력해보기

결과


Windows 미션

가격은 알아서, radiobutton, 계산, reset 까지
구현하기
메일로 제출
메일 제목 : 커피오더프레임_홍길동

package com.tech.mission;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

class Order2 extends JFrame implements ActionListener{
	private JButton reset_button;
	private JPanel center_panel, down_panel;
	private JTextField text;
	private JLabel guide;
	private JLabel message;
	private JRadioButton small,medium,large;
	private ButtonGroup bgSize;
	private String sizeStr="";
	private JRadioButton hot,ice;
	private ButtonGroup bgStyle;
	private String styleStr="";
	
	JPanel welcomePanel=new JPanel();
	JPanel sizePanel=new JPanel();
	JPanel stylePanel=new JPanel();
	
	
	public Order2() {
		setSize(350,300);
		setTitle("커피주문");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
//		welcomePanel
		message=new JLabel("어떤 커피를 주문하시겠습니까?");
		welcomePanel.add(message);
		
		add(welcomePanel,"North");
//		centerPanel
		center_panel=new JPanel(new GridLayout(3,0));
//		sizePanel
		small=new JRadioButton("smallsize");
		medium=new JRadioButton("mediumsize");
		large=new JRadioButton("largesize");
		
		small.addActionListener(this);
		medium.addActionListener(this);
		large.addActionListener(this);
		
		bgSize=new ButtonGroup();
		bgSize.add(small);
		bgSize.add(medium);
		bgSize.add(large);
		
		sizePanel.add(small);
		sizePanel.add(medium);
		sizePanel.add(large);
		
		sizePanel.setBorder(BorderFactory.createTitledBorder("Size"));
//		stylePanel
		hot=new JRadioButton("hot");
		ice=new JRadioButton("ice");

		hot.addActionListener(this);
		ice.addActionListener(this);
		
		bgStyle=new ButtonGroup();
		bgStyle.add(hot);
		bgStyle.add(ice);
		
		stylePanel.setBorder(BorderFactory.createTitledBorder("Style"));
		
		stylePanel.add(hot);
		stylePanel.add(ice);
//		textField
		text=new JTextField("");
//		center_panel
		center_panel.add(sizePanel);
		center_panel.add(stylePanel);
		center_panel.add(text);
		
		add(center_panel,"Center");
//		down_panel
		down_panel=new JPanel();
//		reset_button
		down_panel.setLayout(new GridLayout(2,0));
		reset_button=new JButton("Reset");
		reset_button.addActionListener(this);
//		guide
		guide=new JLabel("크기가 선택되지 않았습니다.");
		guide.setHorizontalAlignment(SwingConstants.CENTER);
		guide.setForeground(Color.red);
		
		down_panel.add(reset_button);
		down_panel.add(guide);
		
		
		
		add(down_panel,"South");
		
		setVisible(true);
	}

	int sum=0;
	@Override
	public void actionPerformed(ActionEvent e) {
		int sizePrice=0,stylePrice=0;
		if(e.getSource()==small) {
			sizeStr="small";
		}else if (e.getSource()==medium) {
			sizeStr="medium";
		}else if (e.getSource()==large) {
			sizeStr="large";
		}
		if(e.getSource()==hot) {
			styleStr="hot";
		}else if (e.getSource()==ice) {
			styleStr="ice";
		}
		switch (sizeStr) {
		case "small":
			sizePrice=1000;
			break;
		case "medium":
			sizePrice=2000;
			break;
		case "large":
			sizePrice=3000;
			break;
		default:
			break;
		}
		switch (styleStr) {
		case "hot":
			stylePrice=0;
			break;
		case "ice":
			stylePrice=500;
			break;
		default:
			break;
		}
		text.setText("sizePrice:"+sizePrice+", stylePrice:"+stylePrice+", Tot:"+(sizePrice+stylePrice));
		guide.setText("size : "+sizeStr+" / style : "+styleStr);
		if(e.getSource()==reset_button) {
			sizePrice=0;
			stylePrice=0;
			bgSize.clearSelection();
			bgStyle.clearSelection();
			text.setText("");
			guide.setText("크기가 선택되지 않았습니다.");
		}
	}
}

public class CoffeeOrderMission {
	public static void main(String[] args) {
		new Order2();
	}
}

결과

profile
개발자 준비의 준비준비중..

0개의 댓글