패키지

1) 클래스들 + 인터페이스들의 집합
2) 패키지를 사용하는 이유
 1 - 관리의 용이성
 2 배포의 목적
3) 패키지는 유사한 기능을 가진 클래스와 인터페이스를 묶어 관리하도록 하며, 개발이 끝난 후 jar파일로 묶어 배포한다.

패키지에 class를 만들고 실행한다면 class 실행 방법이 달라진다.

javac myPack\AAA.java로 컴파일 하고
java myPack.java 로 실행한다.

package myPack; //패키지 선언문 최상단에 와야함
//패키지명과 디렉토리명이 같아야 한다. 대소문자도 같아야 함

public class AAA
{
	public static void main(String[] args) 
	{
		System.out.println("AAA");
		BBB b1 = new BBB();
		b1.foo();
		CCC c= new CCC();
		c.sub();
		DDD d= new DDD();
		d.bar();
	}
}
 
class BBB
{
	public void foo(){
		System.out.println("BBB");
	}
}

import pack.*;
import pack.demo.Demo;

public class TestPack
{
	public static void main(String[] args) 
	{
		My1 m1 = new My1();
		My2 m2 = new My2();

		m1.sub1();
		m2.sub2();
		Demo d1 = new Demo();
		d1.bar();
	}
}

다음과 같이 패키지를 만들어서 class를 만든 후
day15파일에서 import pack.*;을 이용해서
pack이라는 package에 모든 내용을 불러와서 사용할 수 있다.

package에 public을 사용하면 접근할 수 있지만 public이 없으면 같은 패키지일때만 접근이 가능하다.

자바의 접근 지정자

public : 어디서든 접근 가능
protected : 같은 패키지는 물론 다른 패키지일지라도 부모 자식의 상속관계인 경우 접근 가능
생략형 : 같은 패키지 내에 있는 클래스들끼리 접근 가능
private : 자기 클래스 내에서만 접근 가능


실무에서는 디렉토리를 직접 만들지 않고 -d 옵션을 사용한다.
javac -d . Parent.java
패키지랑 class 파일을 생성하라는 뜻

java linux.java.Son1으로 실행 가능

package linux.java;

public class Parent
{
	public int publicVar=10;
	protected int protectedVar=20;
	int defaultVar=30;
	private int privateVar=40;
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

package linux.java;

public class Son1 extends Parent
{
	public void go(){
		System.out.println("publicVar="+publicVar);
		System.out.println("protectedVar="+protectedVar);
		System.out.println("defaultVar="+defaultVar);
		//System.out.println("privateVar="+privateVar);
	}

	public static void main(String[] args) 
	{
		System.out.println("Hello World!");
		Son1 s = new Son1();
		s.go();
	}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
package windows.java;

public class Son2 extends linux.java.Parent
{

	public void go(){
		System.out.println("publicVar="+publicVar);
		System.out.println("protectedVar="+protectedVar);
		//System.out.println("defaultVar="+defaultVar);
		//System.out.println("privateVar="+privateVar);
	}

	public static void main(String[] args) 
	{
		System.out.println("Hello World!");
		Son2 s = new Son2();
		s.go();
	}
}

 

패키징
jar cvf myapp.jar linux, windows

배포하는 방법
1. myapp.jar파일을 jdk/jre/lib/ext 폴더 아래 붙여넣기 한다.


BorderLayout
Frame의 기본 레이아웃은 BorderLayout(동, 서, 남, 북, 중앙의 영역을 지정하여 배치)
만약 영역을 지정하지 않는다면 기본적으로 중앙(Center)에 붙는다.

package day15;
import java.awt.*;

public class MyBorder extends Frame {
	Button b1, b2, b3, b4, b5;
	public MyBorder() {
		super("::MyBorder::");
		//Frame의 기본 레이아웃은 BorderLayout
		b1= new Button("b1");
		b2= new Button("b2");
		b3= new Button("b3");
		b4= new Button("b4");
		b5= new Button("b5");
		add(b1, BorderLayout.NORTH);
		add(b2, "South");
		add(b3, "West");
		add(b4, BorderLayout.EAST);
		add(b5, "Center");
	}
	//생성자ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
	public static void main(String[] args) {
		MyBorder my = new MyBorder();
		my.setSize(500,500);
		my.setVisible(true);
	}
	//mainㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

}/////////////////////

GridLayout

컨테이너의 바깥 여백을 주려면 getInsets()메소드를 오버라이드 하자

package day15;
import java.awt.*;

public class MyGrid extends Frame{
	Button []bt=new Button[5];
	Panel p;
	Button ok,exit;
	public MyGrid() {
		super("::MyGrid::");
		GridLayout gl =new GridLayout(2,3,20,30);
		setLayout(gl);
		//반복문 이용하여 bt배열에 버튼 객체 생성해서 저장한 뒤 부여라
		for(int i=0;i<5;i++) {
			bt[i]=new Button("b"+(i+1));
			add(bt[i]);
		}
		p = new Panel();
		add(p);
		ok = new Button("okay");
		exit = new Button("exit");
		p.setLayout(new BorderLayout());
		p.add(ok,"North");
		p.add(exit,"South");
		p.setBackground(Color.white);
		setBackground(Color.magenta);
		this.setSize(500,500);
		this.setVisible(true);
	}
	//컨테이너의 바깥 여백을 주려면 getInsets()메소드를 오버라이드 하자
	@Override
	public Insets getInsets() {
		//Insets(int top,int left,int bottom,int right) 
		Insets in = new Insets(40,20,30,40);
		return in;
	}
	public static void main(String[] args) {
		new MyGrid();

	}

}

나만의 Panel 만들기

만들어 보기

package day15;
import java.awt.*;

public class MyLayout extends Frame{
	Button []bt = new Button[6];
	Panel p1, p2;
	public MyLayout() {
		super("::MyLayout::");

		p1 = new MyPanel();
		p2 = new MyPanel();
		add(p1,BorderLayout.CENTER);
		p1.setBackground(Color.yellow);
		GridLayout gl = new GridLayout(2,2,10,10);
		p1.setLayout(gl);
		for(int i=0;i<4;i++) {
			bt[i]=new Button("b"+(i+1));
			p1.add(bt[i]);
		}
		
		add(p2,BorderLayout.SOUTH);
		GridLayout gl2 = new GridLayout(2,1,10,10);
		p2.setLayout(gl2);
		p2.setBackground(Color.pink);
		for(int i=4;i<6;i++) {
			bt[i]=new Button("b"+(i+1));
			p2.add(bt[i]);
		}
		
		
		setSize(500,500);
		setVisible(true);
	}
//	@Override
//	public Insets getInsets() {
//		Insets in = new Insets(40,20,20,20);
//		return in;
//	}

	public static void main(String[] args) {
		new MyLayout();
	}

}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
package day15;
import java.awt.*;

public class MyPanel extends Panel{
	
	private int a=10,b=10,c=10,d=10;
	public MyPanel() {
		
	}
	
	public MyPanel(int a, int b, int c, int d) {
		this.a=a;
		this.b=b;
		this.c=c;
		this.d=d;
	}
	
	@Override
	public Insets getInsets() {
		return new Insets(a,b,c,d);
	}
	
	

}
////나만의 패널

 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

SQL문장 작성법

1. 대소문자를 구분하지 않는다.
2. 한줄 또는 여러 줄 입력 가능
3. 하나의 명령어는 여러줄에 나누거나 단축될 수 없다.
4. 일반적으로 키워드는 대문자로 입력, 다른 모든 단어는 소문자로 입력(권장)
5. SQL*PLUS에서 SQL문장은 라인 번호가 붙으며,
   가장 최근의 명령어가 SQL BUFFER에 저장된다.
   (sql명령어만 PLUS명령어는 안들어감)

SELECT문(자료 조회)의 형식
1> SELECT 컬럼명1, 컬럼명2, .... FROM 테이블명
2> SELECT * FROM 테이블명
.. 전체 컬럼을 모두 선택하려면 * 를 입력하면 됨.

cf> 테이블명 뒤에 다음의 문장을 추가하면 더 
      자세한 자료를 추출할 수 있다.
      - WHERE : 검색하려는 자료에 조건을 주어 필요한
      정보만을 뽑을 수 있다.
     - GROUP BY: 일정한 형식을 지닌 자료를 그룹화
       하는 경우에 사용
     - BETWEEN : 얻은 결과에서 레코드 순번으로
       필요한 자료만큼만 읽을 때 사용
     - ORDER BY: 얻은 결과를 정렬할 때 사용

[실습]
모든 열의 선택
SELECT * FROM EMP;

특정 컬럼 선택
SELECT EMPNO,ENAME FROM EMP;
-> 실행결과 날짜,문자열은 좌측 정렬, 숫자는 우측 정렬됨

산술 표현식
SELECT ENAME, SAL, SAL+300 FROM EMP;
SELECT EMPNO,ENAME,SAL,COMM,SAL+COMM FROM EMP
select ename,sal,sal*1.1 from emp

NULL 값을 0으로 처리 NVL(comm,0)
NVL함수 NULL 값을 다른 값으로 바꿀 때 사용한다.
모든 자료형에 사용 가능하다.
다만 전환되는 값과 자료형을 일치시켜야 한다.

NVL2(comm,1,0)
null이 아닐 경우 1 null 인 경우 0

select * from dept;

select * from emp;

select empno, ename, job from emp
order by ename asc;

select * from emp;

select empno, ename, sal, sal+500 as ee from emp;

select ename, job, sal, comm from emp;

select empno, ename, sal, comm ,sal*12+NVL(comm,0) as "총 연봉" from emp;

select ename, NVL2(MGR,1,0) as 관리자 from emp;

select ename||' is a'||job "employes detail" from emp;

--문제 4 emp테이블에서 이름과 연봉을 king: i yeart salary =6000식으로
select ename||' 1 year salary = '|| (sal*12+NVL(comm,0)) as salary from emp
order by salary desc;

 

+ Recent posts