모델링

ayleen·2021년 12월 23일
0

객체지향프로그래밍(OOP, Object-Oriented Programing) : JAVA


객체
사람/동물/사물/주문/예약/감정 ... 지극히 개념적인 것.
1. 고유한 속성을 가지고 있어야한다.
2. 타인도 알 수 있는 것이어야한다.
3. 사전에 등록된 명사여야한다.



ex.
A : "우리 오늘 점심때 라면 먹을래?"
B : "응, 좋아!"


라면 <--- 객체(o)
오뚜기진라면 <--- 인스턴스 : instance


Primitive Type


정수형(4)
. byte ... 8 bit 정수(작은수) : 2의 8승 = 2x2x2x2x2x2x2x2=256 [-128~-1,0~127]
. 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) : 컴퓨터에서 정보를 표시하는 최소 단위(0, 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




속성 + 기능까지 포함된 객체를 표현하는 방법 --> class
(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;
  }

}

<br>
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);
*생성자 오버로딩 : 전달되는 매개변수의 타입이나 개수에 따라서 다양한 생성자를 사용할 수 있는 기능.
<br><br>
> 추상 클래스(Abstract Class)
<br>
(TYPE)		(SUBTYPE)
구기종목  :  축구/야구/농구/배구/탁구
가전제품  :  TV/냉장고/세탁기/전자렌지
모양	   :  세모/네모/동그라미/마름모/별모양
색깔	   :  빨강/노랑/파랑/초록
병	    :  술병/물병/약병/꽃병
<br>
Class C extends A		(o)
Class C extends A, B	(X)    // 자바에서는 다중상속이 안됨.
<br><br>
객체 --> Primitive Type --> Class(사용자/내장) --> Abstract Class(사용자/내장) --> Interface(사용자/내장)
<br>
> 인터페이스(Interface) : 객체들간에 발생할 수 있는 행위/동작/상태를 미리 정의해 놓은 것.
<br>
	face <----> face
    	 . talk()
         . fight()
<br>

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);
}

<br>
Student s1 = new Student();		// 인스턴스 생성(o)
Human 	h1 = new Human();		// 인스턴스 생성(x)
Boy		h1 = new Boy();			// 인스턴스 생성(o)
Human	h1 = new boy();			// 인스턴스 생성(o)
<br>
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


------------
<br><br>
> 자바의 내장 인터페이스(built-in interface)
<br>
. Serializable
<br>
. Cloneable
<br>
. Readable
<br>
. Appendable
<br>
. Closeable
<br>
. AutoCloseable
<br>
. Observable
<br>
. Iterable
<br>
. Comparable
<br>
. Runnable
<br>
Callable
<br>
Repeatable
<br><br>
> 자바의 4대 핵심 기능 : 
<br>
(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)

<br>

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 list = new ArrayList();

list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5);

list = { s1, s2, s3, s4, s5 }

ArrayList list = new ArrayList();
ArrayList 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));


<br><br>

------

<br><br>

회원 관리 = { 회원1, 회원2, 회원3, 회원4, 회원5, ... } <-- 데이터 집합 : 엔티티(Entity)

<br>

회원 관리               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)
);



설계툴을 이용하면 테이블을 더 쉽게 만들 수 있다.
(1) https://www.erwin.com (네카라쿠배당토직야)
(2) https://www.erdcloud.com
(3) https://www.aquerytool.com , https://aquerytool.com

profile
asdf

3개의 댓글

comment-user-thumbnail
2021년 12월 23일
  1. ArrayList list = new ArrayList(); // 타입이 지정되지 않으면 기본값으로 Object
    여기서 object 뭘뜻하죠?

  2. 이거 근데 다시보면 뭐가 뭔지 알아요? 약간 복붙한 느낌인데요?

1개의 답글