객체 ?
. 고유한 속성
. 타인도 알 수 있는 것
. 사전에 등록된 명사
A : "우리 오늘 점심 때 라면 먹을래?"
B : "응, 좋아!"
라면 <--- 객체(o)
"오뚜기진라면" <--- 인스턴스:instance
* Primitive Type
정수형(4)
. byte ... 8 bit 정수(작은수) : 2의 8승= 2x2x2x2x2x2x2x2=256 [-128~-1,0~127] <-- [-(2^n)/2~-1, 0, +(2^n)/2-1]
. short ... 16 bit 정수(큰수)
. int ... 32 bit 정수(더큰수)
. long ... 64 bit 정수(엄청큰수)
실수형(2)
. float ... 32 bit 실수
. double ... 64 bit 실수
문자형(1)
. char ... 16 bit 유니코드
불린형(1)
. boolean ... true / false
비트(bit) : 컴퓨터에서 정보를 표시하는 최소 단위(o, 1)
( 1 bit) : 2의 1승 = 2가지
0
1
(2 bit) : 2의 2승 = 4가지
00
01
10
11
(3 bit) : 2의 3승 = 8가지
000
010
100
110
001
011
101
111
(1) 사용자 정의 클래스(user-defined class) --- Student
(2) 내장 클래스(built-in class)---ArrayList / String / Integer / Double / Random / Date / Calendar etc
학생 : 이름/나이/소속 + 출석하다()/공부하다()/시험보다()
-------------- -------------------------------
(속성) (기능)
public class Student // 클래스 이름
{
private String name; // 속성:Property:멤버필드
private int age;
public Student() // 생성자 1
{
}
public Student(String name, int age) // 생성자 2
{
this.name = name;
this.age = age;
}
public String getName() // 기능:메소드:멤버함수
{
return this.name;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
public void setAge(int age)
{
this.age = age;
}
}
Student s1 = new Student();
s1.setName("Tom"); // private String name;
s1.name = "Tom"; // public String name;
s1.setAge(20);
Student s1 = new Student("Tom", 20);
* 추상 클래스(Abstract Class)
(TYPE) (SUBTYPE)
구기종목 : 축구/야구/농구/배구/탁구
가전제품 : TV/냉장고/세탁기/전자렌지
모양 : 세모/네모/동그라미/마름모/별모양
색깔 : 빨강/노랑/파랑/초록
병 : 술병/물병/약병/꽃병
class C extends A (o)
class C extends A, B (x) // 자바에서는 다중상속이 안됨!
객체 --> Primitive Type --> Class(사용자/내장)--> Abstract Class(사용자/내장)--> Interface(사용자/내장)
* 인터페이스(interface) : 객체들간에 발생할 수 있는 행위/동작/상태를 미리 정의해 놓은 것.
face <----> face
. talk()
. fight()
public interface Human
{
void talk();
void fight();
}
void talk() // 선언부(head)
{
... // 구현부(body)
}
public class Boy implements Human
{
@Override // 재정의
public void talk()
{
System.out.println("Boy is talking...");
}
@Override
public void fight()
{
System.out.println("Boy is fighting...");
}
}
public interface ITV
{
void on();
void off();
void switchChannel(int channel);
}
Student s1 = new Student(); // 인스턴스 생성(o)
Human h1 = new Human(); // 인스턴스 생성(x)
Boy h1 = new Boy(); // 인스턴스 생성(o)
Human h1 = new boy(); // 인스턴스 생성(o)
ex) List list = new ArrayList();
/ built-in / built-in / built-in
(1) Primitive Type ---(2) Class --- (3) Abstract Class ---(4) Interface <<< Data Type
\ user-def \ user-def \ user-def
자바의 내장 인터페이스(built-in interface)
. Serializable
. Cloneable
. Readable
. Appendable
. Closeable
. AutoCloseable
. Observable
. Iterable
. Comparable
. Runnable
Callable
Repeatable
자바의 4대 핵심 기능 :
(1) 캡슐화(encapsulation) : 속성과 기능을 클래스 내부에 집어넣는 행위
-- > en(make ) + capsule(우리가 배운 '클래스'?) + tion
(1.1)정보은닉(information hiding) : 속성의 한정자를 public -> private로 바꾸는 행위
(2) 상속(inheritance) : 클래스나 추상 클래스를 상속받는 행위
(3) 다형성(polymorphism) <--- poly(=many) + morph(=form)
(3.1) 서브타입 다형성(subtype polymorphism)
(3.2) 매개변수 다형성(parametric polymorphism)
(3.3) 오버라이딩, 오버로딩도 다형성의 개념
* Do the task in different ways.
(4) 직렬화(Serialization) : 네트워크에서 파일을 전송할 때, 데이터의 전송효율을 높이기 위해서 전송 데이터를 바이트 코드 형태로 바꾸는 행위.
(1) (2)
▩ ▩
▩ ' ' ' ' ▩
▩ ' ' ' ' ' ' ' ' ▩
▩ ' ' ' ' ' ' ' ' ' ' ▩
▩ ' ' ' ' ' ' ' ' ' ' ▩
<--- ' ' ' ' ' ' ' ' ' ' <--- ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
▩ ' ' ' ' ' ' ' ' ' ▩ (Serialization 직렬화)
▩ ' ' ' ' ' ' ' ' ' ▩
▩ ' ' ' ' ' ' ' '' ▩
▩ ' ' ' ' ' ' ' ' ▩
▩ ' ' ' ' ' ' ' ' ▩
▩ ' ' ' ' ' ' ▩
(1) (2)
Student s1 = new Student();
Student s1 = new Student("Tomson", 28);
Student s2 = new Student("Jack", 25);
Student s3 = new Student("Bill", 24);
Student s4 = new Student("John", 26);
Student s5 = new Student("Steve", 28);
ArrayList<Student> list = new ArrayList<Student>();
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5);
list = { s1, s2, s3, s4, s5 }
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> list = new ArrayList<>(); // 타입 추론 인정됨.
list.add("A");
list.add("B");
list.add("C");
list.add("D");
String s = list.get(0);
ArrayList list = new ArrayList(); // 타입이 지정되지 않으면 기본값으로 Object
list.add("A");
list.add("B");
list.add("C");
list.add("D");
String s = (String) list.get(o); // 형변환(type casting)이 필요함. 왜? 처음에 타입을 지정하지 않았어.
ArrayList list = new ArrayList(); // 타입이 지정되지 않으면 기본값으로 Object
list.add("A");
list.add(1);
list.add(new Float(2.5));
회원 관리 = { 회원1, 회원2, 회원3, 회원4, 회원5, ... } <-- 데이터 집합 : 엔티티(Entity)
회원 관리 MEMBERINFO / MEMBERS / T_MEMBER / TBL_MEMBER
------
회원 아이디 MB_ID VARCHAR2(20) NOT NULL...PK
회원 비밀번호 MB_PW VARCHAR2(20) NOT NULL,
회원 이름 MB_NAME VARCHAR2(20) NOT NULL,
회원 이메일 MB_EMAIL VARCHAR2(20) NOT NULL
-----------
CREATE TABLE T_MEMBER (
MB_ID VARCHAR2(20) NOT NULL,
MB_PW VARCHAR2(20) NOT NULL,
MB_NAME VARCHAR2(20) NOT NULL,
MB_EMAIL VARCHAR2(20) NOT NULL,
CONSTRAINT PK_MEMBER PRIMARY KEY (MB_ID)
);
CREATE TABLE T_...(
);
* 오라클에서 숫자는 number 타입으로 해결하자..
정수 : 999,999,999,999,999 ---> number(15,0)
소수 : 99,999,999,999,999.1 ---> number(15,1)