'2008/08/13'에 해당되는 글 3건
- 2008.08.13 Chap 5. SQL 주요 함수
- 2008.08.13 Part 4. 상속 IV 인터페이스 1
- 2008.08.13 Part 4. 상속 III 추상 클래스와 Final
Chap 5. SQL 주요 함수
select 문은 from 절을 반드시 기술해야 하는데 기술할 해당 테이블이 없을 때 DUMMY 테이블인 DUAL을 사용한다.
ROUND(반올림) 함수
지정한 자리 수 이하에서 반올림한 결과 출력
select round(45.293, 2) : 소수점 2자리에서 반올림을 하여 값을 출력하라.
select round(45.293, -1) : 일의 자리에서 반올림을 하여 값을 출력하라.
TRUNC(버림) 함수
지정한 자리 수 이하를 버린 결과 출력
select trunc(45.293, 2) : 소수점 2자리에서 버린 값을 출력
MOD(나머지 구하는) 함수
나누기 연산을 한 후, 몫이 아닌 나머지를 결과로 되돌려주는 함수.
문자 처리 함수
upper : 대문자로 변경
select upper(컬럼명) from 테이블;
lower : 소문자로 변경
select lower(컬럼명) from 테이블;
initcap : 이니셜만 대문자로 변경
select initcap(컬럼명) from 테이블;
length : 문자열의 길이 출력
select length(컬럼명) from 테이블;
instr : 특정문자가 출현하는 위치 출력
select 컬럼명, instr(컬럼명, '찾는문자') from 테이블;
substr : 문자의 일부분을 추출
select 컬럼명, substr(컬럼명, 1, 2) : 첫문자에서 2글자 추출
select 컬럼명, substr(컬럼명, -3, 2) : 맨뒤 세번째문자에서 2글자 추출
sysdate : 시스템에 저장된 현재 날짜 출력
형변환 함수
to_number : 문자 데이터를 숫자 데이터로 변환
to_char : 숫자나 날짜 데이터를 문자 데이터로 변환
to_date : 문자 데이터를 날짜 데이터로 변환
select sysdate - to_date('2008/01/01', 'yyyy/mm/dd') from dual;
오늘 날짜에서 08년1월1일을 뺀 날이 몇일인가
null 변환 함수 nvl
select ename, sal, comm, sal*12+nvl(comm, 0) from emp;
comm 값이 null인 사람은 0으로 처리해서 출력하라
'수업 > 오라클 + PL/SQL' 카테고리의 다른 글
Chap3,4 SQLPLUS 명령어 & 연산자 (1) | 2008.08.20 |
---|---|
Chap 2. SQL의 기본 (2) | 2008.08.20 |
Chap 8. 서브쿼리 (0) | 2008.08.20 |
Chap 7. 조인 (1) | 2008.08.18 |
Chap 6. 그룹함수 (0) | 2008.08.14 |
Part 4. 상속 IV 인터페이스
인터페이스 내에는 상수 또는 추상메서드만 포함될 수 있다.
정의
접근_지정자 interface 인터페이스 이름{
상수;
접근_지정자 추상메서드();
}
인터페이스에 속한 모든 메서드는 추상메서드이므로 명시적으로 abstract 지시어를 붙이지 않아도 추상 메서드로 인식한다.
===================================================================================
package pack01;
// 추상 클래스 2개
abstract class Hello{
public abstract void sayHello();
}
abstract class Goodbye{
public abstract void sayGoodbye();
}
// 서브 클래스 1개 : extends 다음에는 한개의 슈퍼클래스만 상속 가능
class SubTest extends Hello, Goodbye { // 컴파일 에러
public void sayHello(){
}
public void sayGoodbye(){
}
}*/
public class Ex01 {
public static void main(String[] args) {
}
}
===================================================================================
package pack02;
//추상 클래스 1개, 인터페이스 1개
abstract class Hello{
public abstract void sayHello();
}
interface Goodbye{
void sayGoodbye();
}
// 서브 클래스 1개 : extends 다음에는 한개의 슈퍼클래스만 가능
class SubTest extends Hello implements Goodbye {
public void sayHello(){
}
public void sayGoodbye(){
}
}
public class Ex01 {
public static void main(String[] args) {
}
}
===================================================================================
package pack03;
// 인터페이스 2개
interface Hello{
void sayHello();
}
interface Goodbye{
void sayGoodbye();
}
// implements 다음에는 여러개의 인터페이스를 기술할 수 있다.
class SubTest implements Hello, Goodbye {
public void sayHello(){
}
public void sayGoodbye(){
}
}
public class Ex01 {
public static void main(String[] args) {
}
}
===================================================================================
package pack04;
interface Hello{
void sayHello();
}
interface Goodbye extends Hello{
void sayGoodbye();
}
class SubTest implements Goodbye{
public void sayHello(){
}
public void sayGoodbye(){
}
}
public class Ex01 {
public static void main(String[] args) {
}
}
============================= 도형의 넓이 계산 ==================================
package pack05;
interface IColor{
int RED=1; // static final이 생략된
int GREEN=2; // 이름이 있는 상수
int BLUE=3;
}
// 동일한 접근방식을 위한 표준안을 제공하기 위해서
abstract class Shape{
double area; // 추상클래스에 면적을 저장할 변수 선언
abstract void Calc();
void prn(){ // 일반 메소드도 정의
System.out.println(area);
}
}
// 면적만 구하는 원에서 색상도 있는 원으로 업그레이드
class Circ extends Shape implements IColor{
int color;
Circ(){
color=RED;
}
int r=5;
void Calc(){
area=r*r*Math.PI;
}
}
class Rect extends Shape{
int w=10, h=10;
void Calc(){
area=w*h;
}
}
public class Ex01 {
public static void poly(Shape ref){ // 업캐스팅 후에는
// 반지름이 5인 원의 면적
// 다운캐스팅은 2번 형 검사를 한다.
// 1. 컴파일시의 발생하는 형검사는 캐스트 연산자로 가능
// 2. 런타임시 발생하는 형검사는 instanceof 연산자로
if(ref instanceof Circ){
Circ c=(Circ)ref;
System.out.println("반지름이 "+c.r+" 인 원의 면적");
}
else if(ref instanceof Rect){
Rect r=(Rect)ref;
System.out.println("너비가 "+r.w+" 높이가"+r.h+" 인 사각형의 면적");
}
/*Circ c=(Circ)ref;
System.out.println("반지름이 "+c.r+" 인 원의 면적");*/
ref.Calc(); // 오버라이딩한 함수를 호출하면 인스턴스에
ref.prn(); // 의해서 호출될 함수가 결정된다.
}
public static void main(String[] args) {
poly(new Circ());
poly(new Rect());
/*Circ c=new Circ();
c.Calc();
c.prn();
Rect r=new Rect();
r.Calc();
r.prn();*/
}
}
===================================================================================
'수업 > 자바2JDK입문' 카테고리의 다른 글
Part 5. 자바에서 자주 사용되는 클래스 II - Wrapper 클래스 (0) | 2008.08.19 |
---|---|
Part 5. 자바에서 자주 사용되는 클래스 I Object 클래스 (0) | 2008.08.14 |
Part 4. 상속 III 추상 클래스와 Final (0) | 2008.08.13 |
Part 4. 상속 II 생성자, 레퍼런스 형변환 (2) | 2008.08.11 |
상속을 이용한 클래스 설계 및 출력 (0) | 2008.08.08 |
Part 4. 상속 III 추상 클래스와 Final
추상 클래스는 동일한 메서드로 접근 가능한 서브 클래스들을 설계하도록 하기 위해서이다.
추상 클래스는 객체를 생성할 수 없다.
정의
abstract class 클래스명 {
abstract void 메서드명();
}
추상 메서드를 하나라도 가지면 추상 클래스로 설계해야 한다.
추상 메서드는 추상 클래스의 상속을 받는 서브 클래스에서 어떻게 동작할지 반드시 구현 되어야 한다.
===================================================================================
package training;
// 추상클래스 : 한개 이상의 추상메소드를 갖는 객체 생성을 못함
abstract class AbstractClass {
// 몸체가 없는 메소드 : 추상 메소드
abstract void Method01();
}
// 서브클래스 : 슈퍼클래스로 추상클래스가 사용됨
// 추상 클래스를 슈퍼클래스로 갖는 서브클래스에서는
// 추상메소드를 오버라이딩 해야 한다는 강제성을 부여 받게 된다.
class SubClass extends AbstractClass{
void Method01(){
System.out.println("Method01");
}
}
public class Ex01 {
public static void main(String[] args) {
AbstractClass ac=null; // 레퍼런스 변수 선언은 가능
// ac=new AbstractClass(); // 객체 생성을 못함
ac=new SubClass(); // 업캐스팅
ac.Method01(); // 업캐스팅 후에는 서브클래스에서 오버라이딩된 메소드가 호출 됨
}
}
===================================================================================
// 추상 클래스를 이용한 다형성 : 구체적인 동작은 다르더라도 접근방식은 동일하게
package training;
abstract class Shape{
public abstract void draw(); // 동일해야하는 접근 방식을 추상메소드로
}
class Circ extends Shape{
public void draw(){
System.out.println("원을 그리다");
}
}
class Rect extends Shape{
public void draw(){
System.out.println("사각형을 그리다");
}
}
class Tri extends Shape{
public void draw(){
System.out.println("삼각형을 그리다");
}
}
public class Ex02 {
public static void poly(Shape s){
s.draw();
// 3 객체 모두에 적용될 공통적인 로직을 기술한다. (길면 길수록 유용)
}
public static void main(String[] args) {
poly(new Circ());
poly(new Rect());
poly(new Tri());
/*Shape s=null; // 객체는 생성하지 못하더라도 레퍼런스 변수 선언은 가능하다.
s=new Circ();
s.draw();
s=new Rect();
s.draw();
s=new Tri()
s.draw();*/
}
}
===================================================================================
final
사용 범위 : 변수, 메서드, 클래스
final 변수 : 변수를 상수화 시켜서 저장된 값이 변하지 않는다.
final 메서드 : 서브클래스에서 오버라이딩을 허용하지 않는다.
final 클래스 : 상속이 허용되지 않는다.
===================================================================================
package training;
class FinalTest{
final int A=10; // 이름이 있는 상수
// int a=10; // a는 변수
final public int getA(){
return A;
}
}
final class SubTest extends FinalTest{
// FinalTest 클래스의 final getA() 메소드는 오버라이딩이 불가능
/*public int getA(){
return A;
}*/
}
/*class SubEx extends Subtest{ // final SubTest는 서브클래스를 만들 수 없다.
}*/
public class Ex04 {
public static void main(String[] args) {
FinalTest ft=new FinalTest();
// ft.a=20; // final로 선언된 변수는 상수화되어 값을 변경할 수 없기에 대입연산자 왼쪽에 못옴
// 10=20; // 상수는 값이 변할수 없기에 대입연산자 왼쪽에 못옴
System.out.println(ft.A);
}
}
===================================================================================
'수업 > 자바2JDK입문' 카테고리의 다른 글
Part 5. 자바에서 자주 사용되는 클래스 I Object 클래스 (0) | 2008.08.14 |
---|---|
Part 4. 상속 IV 인터페이스 (1) | 2008.08.13 |
Part 4. 상속 II 생성자, 레퍼런스 형변환 (2) | 2008.08.11 |
상속을 이용한 클래스 설계 및 출력 (0) | 2008.08.08 |
Part 4. 상속 I (0) | 2008.08.08 |