GUI

1세대 : AWT(Abatract Windows Toolkit) -> OS로부터 그래픽 자원을 빌려 씀

2세대 : Swing -> 자바 내부적으로 그래픽 자원 지원

3세대 : FX 



패널(panel)은 컴포넌트들을 가질 수 있는 컨테이너

레이블은 편집이 불가능한 텍스트



이벤트 처리 과정

1. 이벤트가 발생할 컴포넌트를 생성

2. 원하는 이벤트를 처리하는 리스터 인터페이스를 구현

3. 1번 컴포넌트에 2번객체를 연결





import java.awt.*;

import javax.swing.*;


class MyFrame extends JFrame {

private JButton btn;

private JLabel label;   //컴포넌트들을 Frame클래스의 멤버변수로 선언

private JTextField tF;

public MyFrame(){

btn = new JButton();

label = new JLabel("달러값 입력");

btn = new JButton();

btn = new JButton();

btn.setText("환전");

tF = new JTextField(5);

this.add(tF);

this.add(btn);

this.add(label);


btn.addActionListener(new MyListener());

//이벤트 처리 구현 클래스의 객체를 컴포넌트에 연결

setTitle("MyFrame");

setSize(300,200);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLayout(new FlowLayout());

setVisible(true);

}

class MyListener implements ActionListener{

public void actionPerformed(ActionEvent e){

// System.out.println("그만눌러");

try{

String money =  tF.getText();

int num = Integer.parseInt(money);

// num++;

int result = num*1142;

String result2 = String.valueOf(result+"원");

label.setText(result2);

}catch(NumberFormatException e1){

// e1.printStackTrace();    }

// ((JButton) e.getSource()).setText("눌렸다");

} //리스너 구현클래스가 프레임 클래스의 내부로 들어가면 프레임의 멤버변수인 

}  // 컴포넌트들에 접근이 자유롭다.

}

public class MyFrameTest {

public static void main(String[] args) {

MyFrame f = new MyFrame();

}

}



이벤트 처리기의 위치 

1) 별도의 클래스로 이벤트 처리기를 작성

2) 내부클래스로 이벤트 처리기를 작성

3) 프레임 클래스가 이벤트 처리기도 함께 구현

' IOT 기반 응용 SW과정 > Java, Eclipse ' 카테고리의 다른 글

Day27 MySQL  (0) 2016.04.22
Day 26 데이터베이스 프로그래밍  (0) 2016.04.21
Day23 TCP  (0) 2016.04.18
Day22 TCP  (0) 2016.04.12
Day21 입출력 / 네트워크 프로그래밍  (0) 2016.04.11

절차지향 



객체지향 

(변수 + 함수 / 상속 / 다형성, GOF, 디자인패턴)



프레임워크

(spring)





상속

(어떤 클래스가 다른 클래스의 멤버변수와 멤버함수를 물려 받는 것)

(기존 클래스의 필드와 메소드를 재사용하기 위한 기법)

(기존클래스의 일부 변경도 가능)

(복잡한 GUI 프로그램을 순식간에 작성)


superclass // subclass

부모클래스 // 자식클래스



<is - a 관계>





 public class Car {

      public int speed; 

public int gear;     //3개의 필드 선언

public String color;

                       //3개의 메소드 선언

public void setGear(int gear) 

{

this.gear =  gear;

}

public void speedUp(int increment)

{

speed += increment;

}

public void speedDown(int decrement)

{

speed -= decrement;

}

}

   

 public class SportsCar extends Car {

                  // Car를 상속받는다.

        

public boolean turbo;

                 // 1개의 필드를 추가

public void setTurbo(boolean newValue) {

                //1개의 메소드를 추가


turbo = newValue;

                //터보 모드 설정 메소드

}

}


 public class CarTest {

public static void main(String[] args) {

SportsCar scar = new SportsCar(); 

                                //수퍼클래스 필드 접급


     scar.color = "RED";

     scar.setGear(3); //수퍼클래스 메소드 접근

     scar.speedUp(200);

     scar.setTurbo(true);   //자체 메소드 호출

}

}

   



상속이란.. 

부모클래스로 객체 찍어낸 후, 거기에 이어 붙여서 자식으로 객체 찍어내서 붙여서 하나의 객체를 만들어 내는 것.


class Parent{

      int data = 100;

public void print(){

System.out.println("부모임");

}

}

class Child extends Parent{

int data = 200;

public void print(){        //메소드 재정의

int data = 300;

super.print();

System.out.println("자식임");

System.out.println("data : " + data);

System.out.println("this.data : "+ this.data);

System.out.println("super.data : "+ super.data);

}

}

public class ParentTest {

public static void main(String[] args) {

new Child().print();

}

}

 




class Parent{

       int data = 100;

public Parent(int data){

System.out.println("Parent의 기본생성자");

this.data = data;

}

class Parent{

public void print(){

System.out.println("부모임");

}

}

class Child extends Parent{

int data = 200;

public Child(){

super(200);                //부모클래스에 기본생성자가 없다면.

                // 자식 생성자에 숨어있는 super()가 

                //동작X, 명시적으로 매개변수 맞춰서

                //부모 생성자를 호출해줘야됨. 



부모클래스의 private는 접근불가 // protected는 외부에서는 접근불가, 같은패키지와 자식클래스는 접근가능


public class Employee {

public String name;

private int RRN;

protected int salary;

protected int getSalary(){

return salary;

}

protected void setSalary(int salary){

this.salary = salary;

}

}

 public class Manager extends Employee{

private int bonus;

public int getSalary(){              //메소드의 가시성을 증가시키는 것은 가능.

return salary + bonus;   //protected 멤버인 salary는 접근가능.

}

private void setSalary(int salary){

super.salary = salary;        //오류! 메소드의 가시성을 줄이면 안된다.

}

public void serRRN(int rrn){

RRN = rrn;              //오류! private는 서브클래스에서 접근불가.

}

}



키워드 final을 붙이면 상속이나 재정의(@Override)를 할 수 없다.






객체지향에서의 다향성


전제 : 부모클래스의 참조변수로 자식클래스의 객체를 참조할 수 있음(자식클래스의 객체에는 부모클래스로 만든 객체를 포함하닌까)


- 부모클래스의 참조변수로 자식클래스 객체를 참조했을때는 부모클래스의 존재하는 멤버에만 접근가능


- 부모클래스의 참조변수로 자식클래스의 객체를 참조해서 부모클래스에 존재하는 멤버함수 호출 시 자식클래스에서 

해당 메소드를 오버라이딩 했다면 실제 호출되는 함수는 자식에서 오버라이딩한 메소드가 호출됨(동적 바인딩)




public class Shape {

protected int x,y;

public void draw(){

System.out.println("도형을 어떻게 그려 ㅋ");

}

}

 public class Rectangle extends Shape {


private int width, height;


public int getWidth() {

return width;

}


public void setWidth(int width) {

this.width = width;

}


public int getHeight() {

return height;

}


public void setHeight(int height) {

this.height = height;

}


@Override

public void draw() {

System.out.println("사각형을 그립시담.");

}

}

 public class Triangle extends Shape {

private int base, height;


public int getBase() {

return base;

}

public void setBase(int base) {

this.base = base;

}

public int getHeight() {

return height;

}

public void setHeight(int height) {

this.height = height;

}

@Override

public void draw() {

// TODO Auto-generated method stub

System.out.println("삼각형을 그립시닷");

}

}

 public class Circle extends Shape {


private int radius;


public int getRadius() {

return radius;

}

public void setRadius(int radius) {

this.radius = radius;

}

@Override

public void draw() {

System.out.println("원을 그립시당");

}

}


 public class ShapeTest {

public static void main(String[] args) {


// Shape s = new Rectangle();

// //Rectangle이 Shape를 상속받았고

// //Shape가 print()메소드를 정의했으므로 호출가능

// s.print();

//

// //Rectangle에는 setWidth(int) 메소드가 존재하지만

// //부모클래스 참조변수로 참조했을때는 Shape에도 존재하는 멤버만 접근가능

// s.setWidth();

//

// //draw는 Shape가 정의했으므로 접근 가능하고

// //Rectangle이 오버라이딩 했으므모 실제 실행되는 함수는 Rectangle의 draw(동적바인딩)

// s.draw();

Shape[] shape = new Shape[3];

shape[0] = new Rectangle();

shape[1] = new Circle();

shape[2] = new Triangle();

for(int i = 0; i< shape.length; i++ )

shape[i].draw();

}

}


' IOT 기반 응용 SW과정 > Java, Eclipse ' 카테고리의 다른 글

Day15 전략패턴  (0) 2016.04.01
Day 14 형변환 , 추상클래스  (0) 2016.03.31
Day12 변수  (0) 2016.03.29
Day11  (0) 2016.03.28
Day10 public/private  (0) 2016.03.25
프로그램 : 컴퓨터가 동장해야되는 수행 명세
데이터 > 정보 : 의미있는 데이터

事物인터넷 : IOT // 한국사물인터넷협회

->융합기술(스마트+빅데이터)


스마트 : 유비쿼터스진행형 [백색가전제어, 로봇*드론 조작]
빅데이터 : 통계분석 [센서,기타 데이터 창출매체와 인터넷연결]

<이동통신규격>


\ 웹페이지 \
HTML에 의해서 구조가 잡히고, CSS에 의해서 꾸며지고, Flash/Java Script(JQeury)에 의해서 동적으로 반응


CLI - Command Line Interface    (cd..// cd [ ] )

[dir - dos 기반 CLI에서 현재 폴더의 리스트를 출력]


GUI - Graphic User Interface



자바를 이용해서 프로그램을 개발하시려면, 자바 개발환경을 갖추고(JDK),
 적절한 자바 개발환경을 셋팅

Java SE Development Kit (JDK) - 제작 > JRE - 실행


환경변수에 경로등록

해당 경로에 있는 파일들이 어디서나 실행가능하도록 등록 

[C:\Program Files\Java\jdk1.8.0_73\bin]


내컴퓨터 속성 고급시스템 / 고급탭 - 환경변수 - 아래박스

Path 변수값 찾아서 더블클릭

맨 뒤에 : 추가 하고 자바 경로를 붙여놓고 확인 


(EX)


java 프로그램 개발 단계

어셈블리어 [ ADD연산 3 5 - 00 0011 0101

MULT연산- 10

SUBT연산 - 01

    DIV연산 - 11                ]


컴파일(러.javac) - 사람이 프로그래밍 언어의 문법에 맞춰 작성한 소스코드를 컴퓨터가 

실행가능한 기계언어로 번역, 번역된 기계어를 

자바가상머신(클래스 적재기, 바이트 코드 검증기)에 투척하면 프로그램이 실행됨



통합 개발 환경( integrated development environment)  - IDE


++이클립스++









' IOT 기반 응용 SW과정 > Java, Eclipse ' 카테고리의 다른 글

Day 06 复习  (0) 2016.03.21
Day 05 if/while  (0) 2016.03.18
Day 04 변수  (0) 2016.03.17
Day 03 영역  (0) 2016.03.16
Day 02 메소드  (0) 2016.03.15

+ Recent posts