package study.ExDate;


import java.util.Calendar;

import java.util.Date;

import java.util.Locale;

import java.util.TimeZone;


/**

 * @author admin

 *

 */

public class UtilCalendar {


private static Calendar cal = Calendar.getInstance();


/**

* 현재 연월일 시분초 밀리세컨드까지 가져오는 메소드

*/

public static void getSamDate() {


disDate();


}


public static void getSetDate() {


Date date = new Date();

// 5초 추가

date.setTime(5000);

// 현재시간에 5초로 시간 설정

cal.setTime(date);

// 년

disDate();


}


/**

* 지역을 찾아서 영국과의 시간차를 빼기위한 메소드

*/

public static void getDateLocale() {

Locale lo = Locale.getDefault();


System.out.println(cal.get(Calendar.YEAR));

System.out.println(cal.get(Calendar.MONTH) + 1);

System.out.println(cal.get(Calendar.DATE) + "일");

System.out.println(cal.get(Calendar.AM_PM) + "오전오후");

if (lo.getCountry().equals("KR") && lo.getLanguage().equals("ko")) {

System.out.println(cal.get(Calendar.HOUR) - 9 + "시간");

} else {

System.out.println(cal.get(Calendar.HOUR) + "시간");

}

System.out.println(cal.get(Calendar.MINUTE) + "분");

System.out.println(cal.get(Calendar.SECOND) + "초");

System.out.println(cal.get(Calendar.MILLISECOND) + "세컨드");

System.out.println(cal.getTimeInMillis() + "");


}


public static void getUkDate() {

// 다시 객체 생성

cal = Calendar.getInstance();


TimeZone zone = TimeZone.getTimeZone("Europe/London");


cal.setTimeZone(zone);


disDate();


}


public static void useContryDate() {


String[] local = TimeZone.getAvailableIDs();


for (String s : local) {

System.out.println(s);

}


}


public static void disDate() {


// 년

System.out.println(cal.get(Calendar.YEAR));

System.out.println(cal.get(Calendar.MONTH) + 1);

System.out.println(cal.get(Calendar.DATE) + "일");

System.out.println(cal.get(Calendar.AM_PM) + "오전오후");

System.out.println(cal.get(Calendar.HOUR) + "시간");

System.out.println(cal.get(Calendar.MINUTE) + "분");

System.out.println(cal.get(Calendar.SECOND) + "초");

System.out.println(cal.get(Calendar.MILLISECOND) + "세컨드");

System.out.println(cal.getTimeInMillis() + "");

}


}








1. 인터페이스와 클래스의 차이 

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
hjjavainterface I2{
    public String A();
}
interface I3{
    public String B();
}
class D implements I2, I3{
    public String A(){
        return "A";
    }
    public String B(){
        return "B";
    }
}
public class PolymorphismDemo3 {
    public static void main(String[] args) {
    
        //전체 메소드 사용 가능 
        D obj = new D();
        // I2에 정의된 메소드만 사용가능 
        I2 objI2 = new D();
        //I3에 정의된 메소드만 사용가능 
        I3 objI3 = new D();
         
         //아무 문제가 없다.
        obj.A();
        obj.B();
         
        objI2.A();
        //objI2.B(); 존재하지 않는 메소드 
         
        //objI3.A();
        objI3.B(); 존재하지 않는 메소드 
    }
}
cs



 Hand 인터페이스를 implements한 클래스(Car, Book, Water)가 있다


hand에는 들어올리다, 보다라는 메소드가 있고 이것을 implements한 Car,Book,Water는  전부 구현한 상태이다. 

그리고 인터페이스에 주입하는 클래스의 객체가 어떤 것이냐에 따라 서로다른 역할 을 감당할 수 있다. 

//Car클래스의 메소드와 Hand의 인터페이스를 구현한 메소드 및 인스턴스 변수를 사용할 수 있는 것이다. 

Hand hand = new Car();

그러나 여기서 유의할점은 Hand를 implements한 다른 클래스는 new Car()객체의 메소드는 부를 수 없다 

 Hand hand2 = new Book();

//오류 없는 메소드 

hand2.door();


[Java 코드로만 데이터베이스를 사용 ]

=>Connection, Statement, ResultSet을 이용해서 사용 

=> 프레임워크를 이용하지 않기 때문에 프레임워크의 변화에 아무런 영향도 받지 않습니다. 

=> 디자인 패턴이나 코드 최적화를 하지 않으면 비효율적이 프로그램이 만들어집니다. 

=> 디자인 패턴이나 알고리즘 및 자료구조 공부를 많이 한 경우에 사용합니다. 


[프레임워크를 이용하는 방법 ]

=> 알고리즘이나 디자인 패턴 및 자료구조를 심도있게 공부하지 않아도 무난한 데이터베이스 연동 프로그램을 만들수 있습니다. 


1) SQL Mapper Freamwork : SQL을 별도로 작성하고 실행해서 결과를 가져오는 방식으로 파라미터 매핑이나 결과 매핑은 프레임워크가 대신 해줍니다. 

이 방식의 대표적인 프레임워크는 MyBatis(iBatis)가 있습니다.  

구현 방법이 쉽기 때문에 현재 우리나라 공공기관 프로젝트나 금융기관 프로젝트가 많이 사용하고 있습니다. 


2) Object Relationship Mapping Framework :테이블과 클래스를 매핑시켜서 SQL 없이 데이터 베이스 작업을 수행하는 방식입니다. 

이 방식의 대표적이 프레임워크는 Hibernate - JPA가 있습니다. 

구현은 어렵지만 성능 SQL Mapper보다 우수합니다. 

SI(시스템 통합)에는 부적합하고 일반 application 개발에 주로 이용 




set abstractSet에는 equals와 hashcode() removeAll()을 가진 추상클래스 입니다. 


내용참조 주소 

출처 : http://tcpschool.com/java/java_collectionFramework_set

'Java > 자바 공부' 카테고리의 다른 글

다형성 인터페이스와 클래스의 차이  (0) 2018.04.17
JAVA 에서 데이터베이스 사용하는 종류  (0) 2018.04.09
Java의 접근 지정자  (0) 2018.04.04
클래스와 인스턴스와 생성자 정의  (0) 2018.02.12
테이블  (0) 2018.02.06

자바의 접근지정자 





1. 자바의 4가지 접근 지정자 


1. private - 클래스 내부에서만 사용가 능한 접근지정자 

                - 만약 변수를 Private로 만든 후 상위클래스를 상속받으면  상속은 되지만, 하위 클래스에서 사용할 수 없습니다.

2. default (pakage) - 패키지 내에서는 public 패키지 외에서 private 

- 자신의 패키지 내에서만 사용이 가능합니다. 

3.protected - 패키지 내에서는 public  외부에서는 클래스내부와 상속받은 클래에서만 사용이 가능합니다. 


4. public -클래스 내부 하위클래스 전부 사용가능  인스턴스 사용가능 



'Java > 자바 공부' 카테고리의 다른 글

JAVA 에서 데이터베이스 사용하는 종류  (0) 2018.04.09
Set에 대해서 공부  (0) 2018.04.04
클래스와 인스턴스와 생성자 정의  (0) 2018.02.12
테이블  (0) 2018.02.06
main  (0) 2018.01.29

1. 클래스와 객체

- 클래스의 정의 : 객체를 정의해 놓은 것

- 클래스의 용도 : 객체를 생성하는데 사용

- 객체의 정의 : 실제로 존재하는 것 (사물 또는 개념)

- 객체의 용도 : 객체의 속성과 기능에 따라 다름

- 클래스를 정의하고 클래스를 통해 객체를 생성하는 이유는 설계도를 통해서 제품을 만드는 이유와 같다.

- 하나의 설계도만 잘 만들어 놓으면 제품을 만드는 일이 쉬워지는 것과 같기 떄문이다.

- JDK에서는 많은 수의 유용한 클래스(API)를 기본적으로 제공하고 있다.


2. 객체와 인스턴스

- 객체는 인스턴스를 포함하는 일반적인 의미

- 인스턴스화 : 클래스로부터 인스턴스를 생성하는 것

- 클래스 > 인스턴스화 > 인스턴스(객체)


3. 객체의 구성요소

- 객체는 다수의 속성과 다수의 기능 두 종류의 구성요소로 이루어진다.

- 객체는 속성과 기능의 집합이며, 속성과 기능을 객체의 멤버라고 한다.

- 속성(Property) : 멤버변수(member variable), 특성(attribute), 필드(field), 상태(state)

- 기능(function) : 메서드(method), 행위(behavior), 함수(function)


4. 인스턴스의 생성

- 클래스명 참조변수명 = new 클래스명();

- 클래스의 객체를 참조하기 위한 참조변수를 선언하고 객체를 생성 후, 객체의 주소를 참조변수에 저장한다.

- 인스턴스 초기화 : 인스턴스 변수에 적절한 값을 저장하는 것이다.


5. 생성자(Constructor)

- 클래스이름(타입 변수명, 타입 변수명) { // 인스턴스 생성시 수행될 코드 }

- 인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메소드' 이다.

- 인스턴스 변수의 초기화 또는 인스턴스 생성시 수행할 작업에 사용한다.

- 몇가지 조건을 제외하고는 메서드와 같다.

- 모든 클래스에는 반드시 하나 이상의 생성자가 있어야 한다.

- 생성자의 이름은 클래스의 이름과 같아야 한다.

- 생성자는 리턴값이 없다. void도 쓰지 않는다.

- 기본 생성자(default constructor) : 매개변수가 없는 생성자, 클래스에 생성자가 하나도 없으면 컴파일러가 기본 생성자를 추가한다.

- 매개변수가 있는 생성자 : 인스턴스마다 각기 다른 값으로 초기화되어야하는 경우가 많기 때문에 매개변수를 사용한 초기화는 매우 유용하다.



출처: http://gangzzang.tistory.com/entry/클래스Class-객체Object-인스턴스Instance-생성자Constructor [갱짱.study]

출처: http://gangzzang.tistory.com/entry/클래스Class-객체Object-인스턴스Instance-생성자Constructor [갱짱.study]

'Java > 자바 공부' 카테고리의 다른 글

Set에 대해서 공부  (0) 2018.04.04
Java의 접근 지정자  (0) 2018.04.04
테이블  (0) 2018.02.06
main  (0) 2018.01.29
dao  (0) 2018.01.29

package JTableMake;


import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;


import javax.swing.JButton;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.table.DefaultTableModel;

import javax.swing.table.TableModel;


public class DataWindowTable extends JFrame {

private static final long serialVersionUID = 1L;


// 기본설정은 항상 생성자에서

public DataWindowTable() {


// 테이블에 출력할 데이터 만들기

// 컬럼이름

String[] columns = { "학생", "장래희망", "나이" };


// 데이터 만들기

String[][] datas = { { "김영진", "DJ", "27" }, { "김민호", "경호원", "28" }, { "김기남", "바텐터", "28" },

{ "모인재", "바리스타", "28" }


};


// 데이터를 테이블에 출력하기 위해서 TableModel로 변경


TableModel model = new DefaultTableModel(datas, columns);


// 위의 데이터를 가지고 테이블을 생성

JTable table = new JTable(model);


// Scrollpane을 생성해서 JTable을 배치하고 중앙에 배치

// 컬럼이 나오지 않는다 이걸 출력하기 위해서

JScrollPane sc = new JScrollPane(table);


add("Center", sc);


JPanel p = new JPanel();

JLabel l = new JLabel("이름");

p.add(l);


JTextField Field = new JTextField(5);


p.add(Field);


JLabel category = new JLabel("분야");

p.add(category);

JComboBox<String> cbdream = new JComboBox<String>();


cbdream.addItem("경호원");

cbdream.addItem("경찰");

cbdream.addItem("의사");

cbdream.addItem("비행사");

p.add(cbdream);


JLabel age = new JLabel("나이");

p.add(age);


JTextField ageput = new JTextField(3);

p.add(ageput);


JButton btn = new JButton("삽입");

p.add(btn);

JButton btn1 = new JButton("삭제");

p.add(btn1);

add("North", p);


setTitle("표만들기");

setBounds(700, 300, 500, 500);

setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE);


// 버튼을 눌렀을 때는 ActionEvent 발생


ActionListener listener = new ActionListener() {


@Override

public void actionPerformed(ActionEvent e) {


// 이벤트 라우팅


switch (e.getActionCommand()) {


case "삽입":

// 입력하거나 선택한 데이터 가져오기


String name = Field.getText();

String age1 = ageput.getText();

String category1 = cbdream.getSelectedItem().toString();

System.out.println(name);

System.out.println(age1);

System.out.println(category1);


// 오류 메세지

if (name.trim().length() < 1) {

JOptionPane.showMessageDialog(null, "이름은 필수 입력", "입력오류", JOptionPane.ERROR_MESSAGE);

// 중간에 빠져나가고 싶으면 리턴을하면됩니다.

return;

}

 

if (age1.trim().length() < 1) {

JOptionPane.showMessageDialog(null, "나이를입력 필수", "입력오류", JOptionPane.ERROR_MESSAGE);

// 중간에 빠져나가고 싶으면 리턴을하면됩니다.

return;

}

// age는 숫자로만 구성되어야합니다.

int i = 0;

while (i < age1.length()) {


char ch = age1.charAt(i);

if (ch < '0' || ch > '9') {

JOptionPane.showMessageDialog(null, "나이는 숫자로만 입력", "입력오류", JOptionPane.ERROR_MESSAGE);

return;

}


i = i + 1;

}


// 데이터 삽입작업

String[] row = { name, category1, age1 };


// 테이블의 모델을 꺼내기

// 형변환한 이유

// JTable의 Model은 DefaultTableModel 클래스 타입인데

// getModel로 리턴받게 되면 TableModel로 리턴되서

// 원래의 자료형으로 형변환해서 사용합니다.

// 테이블에 삽입이 아닌 테이블의 모델이 삽입한 것 

DefaultTableModel m = (DefaultTableModel) table.getModel();

m.addRow(row);

JOptionPane.showMessageDialog(null, "삽입에 성공", "데이터 삽입",JOptionPane.INFORMATION_MESSAGE);

Field.setText("");

age.setText("");

cbdream.setSelectedIndex(0);

break;

case "삭제":

int rownum = table.getSelectedRow();

//선택이 안된경우는 음수값

if(rownum<0) {

JOptionPane.showMessageDialog(null, "삭제할 행을 선택하세요", "데이터 삭제",JOptionPane.INFORMATION_MESSAGE);

return;

}

// Confirm 대화상자 출력 

int r =  JOptionPane.showConfirmDialog(null, "정말로삭제? ","데이터삭제",JOptionPane.YES_NO_CANCEL_OPTION);

if(r==0) {

DefaultTableModel m1 = (DefaultTableModel)table.getModel();

m1.removeRow(rownum);

JOptionPane.showMessageDialog(null, "삭제완료","삭제",JOptionPane.INFORMATION_MESSAGE);

}


break;

}


}


};

btn.addActionListener(listener);

btn1.addActionListener(listener);

}


}



'Java > 자바 공부' 카테고리의 다른 글

Java의 접근 지정자  (0) 2018.04.04
클래스와 인스턴스와 생성자 정의  (0) 2018.02.12
main  (0) 2018.01.29
dao  (0) 2018.01.29
view  (0) 2018.01.29

package java18_0129;


import java.util.List;


public class Main {


public static void main(String[] args) {


SingerDao dao = SingerDao.sharedInstance();


SingerView view = new SingerView();

while (true) {

String menu = view.menuDisplay();

switch (menu) {

case "1":

List<Singer> list = dao.getSingerlist();

view.listView(list);

break;

case "2":

String userid = view.setSingerUserId();

Singer s = dao.lookUserid(userid);

// 껍데기 형태로 있다.

view.singerDisplay(s);

break;

case "3":

Singer singerinput = view.insertview();

int r = dao.insertSinger(singerinput);

if (r > 0) {

System.out.println("성공");

List<Singer> list1 = dao.getSingerlist();

view.listView(list1);

break;

} else {

System.out.println("삽입에 실패했습니다");

}

case "4":

Singer update = view.UpdateView();

r = dao.UpdateSinger(update);

if (r > 0) {

System.out.println("수정완료");

Singer singer4= dao.lookUserid(update.getUserid());

view.singerDisplay(singer4);

} else {

System.out.println("수정실패");

}

break;

case "5":

userid = view.deleteView();

r = dao.deleteSinger(userid);

if (r > 0) {

System.out.println("삭제 성공");


break;

} else {

System.out.println("실패");

}

}

}

}

}



'Java > 자바 공부' 카테고리의 다른 글

클래스와 인스턴스와 생성자 정의  (0) 2018.02.12
테이블  (0) 2018.02.06
dao  (0) 2018.01.29
view  (0) 2018.01.29
스트링을 숫자로 바꾸기  (0) 2018.01.21

+ Recent posts