[2023.10.12] 개발자 교육 14일 차 : 강의-복습, 개발도구, 상속, 생성자 [구디 아카데미/김승수 강사님]

DaramGee·2023년 10월 12일
0

오늘 정리

Java의 특징? 하나의 상속만 extends가능하지만 여러개의 인터페이스를 impliments 가능

상속이란? 부모의 변수나 메소드를 자손이 훼손하지 않는 범위로 사용할 수 있고, 그 메소드를 오버로딩할 수 있고, 그럴 때 부모가 실행하는 메소드를 그림자메소드 化 한다.

  • 개발도구 설치

    • 오라클11g(win32_11gR1~)

      • RDBMS(서버 제품군) 중 가장 비싸고 가장 신뢰도 높은 오라클11g

      • 설치 순서

        • setup 파일 관리자 권한 실행 → 전역 데이터 베이스 이름(+11)/암호(입력) → 이메일 체크 취소 → 다 체크(운영체제, 서비스팩, 네트워크 구성요구사항을 확인) → 엑세스 허용 → 설치
        • 창 → 암호관리 → SCOTT 해제, 암호/ HR 해제, 암호 / 확인
        • 오라클 ip 확인법 기본 포트는 1521(틀리면 1씩 증가)
          • D:\app\GD\product\11.1.0\db_1\NETWORK\ADMIN 에서 listener 파일 메모장으로 열어 확인 가능
        • 설치후 확인 확인 → cmd → sqlplus 아이디/암호@IP주소/orcl11
        • 나가기 : quit
        • 관련 API → java.sql 패키지 확인 가능
      • 오라클 실습

        • 조인 확인 : SELECT ename, dname, dept.deptno FROM emp, dept where emp.deptno = dept.deptno;
        • 조건 : SELECT ename, dname, dept.deptno FROM emp, dept where emp.deptno = dept.deptno;
        • select * from tab
    • Toad

      • 개발 분야
        • 빅데이터 - AI
        • 대용량데이터베이스 솔루션 -3초, 튜닝에서 사용
      • 오라클서버 접속할 때, 에러를 잡을 때, 튜닝에 사용
      • 계정전체 or 일부 백업가능(엑셀, 텍스트 등)
      • 설치순서
        • Toad DBA~ 11.5 관리자권한 실행 → 동의/다음 → 체크(경로변경x)/install → next → license/message(아래)/apply → next → register later → 오류가 발생 → 아니오 광 → finish
          - toad 실행(id/pw/pw 기억하기 클릭)
              
              
          - toad 글씨 설정(view → toadoption →Display → Editor)
              
              
      - 실습
          
          ```sql
          SELECT deptno, dname, loc 
            FROM dept;
            
          SELECT sysdate, to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS AM') FROM dual;  
          
          SELECT
                       컬럼명1, 컬럼명2, ......
             FROM 집합이름, 집합이름,,,,,,
             
          SELECT
                       d.deptno, e.ename, d.dname
             FROM emp e, dept d
           WHERE e.deptno = d.deptno
                  AND e.ename = 'SMITH';
          ```
          
      - 다른 ip로 가보기
          - Session → New Connection → ip 입력
          - 자리비워서 연결끊기면  Session → Test Connection
          
    • ER-Win (Entity Relation Diagram) 다운로드 or 안되면 diagrams, cloud ERD 검색해서 사용
      • ERD 만드는 프로그램 & 오라클 연동되는 프로그램 (DDL을 자동으로 만들어줌)
      • 설치순서
        • CAEDM73 ~Moderler 관리자권한 실행 → 스크롤해서 agree → Organization : user → next & install → finish →
      • 실행
        • 파일열기, 키입력 add
      • 사용
        • file → new → Logical/Physical 선택
        • 아이콘변경 model → model properties → Notation (IE)로 변경)
        • Entitu … 눌러서 추가
        • Attribute = 컬럼
        • 박스에서 컬럼 선택하여 프라이머리키로 위치이동 가능!

복습

  • 치환/가비지컬렉터/candidate 등(Reload1)
    • 가비지컬렉터 → 쓰레기값 회수 스케줄에 따라 회수 but, 시간차가 있음.
    • candidate을 통해 찜을 해둠 → 가비지컬렉터에서 회수해감.
      • 예 : a = null; //찜
    • 코드
      import java.awt.Color;
      import java.awt.Container;
      import java.awt.event.ActionEvent;
      import java.awt.event.ActionListener;
      
      import javax.swing.JButton;
      import javax.swing.JFrame;
      import javax.swing.JPanel;
      
      public class Reload1 extends JFrame implements ActionListener{
      	/*선언부*/
      	JPanel jp = new JPanel();
      	JButton jbtnNew = new JButton("새로고침");
      	JButton jbtn = new JButton("조회");
      	/*생성자*/
      	Reload1(){
      		initDisplay();
      		
      	}
      	/*정의메소드*/
      	public void initDisplay() {
      		jbtnNew.addActionListener(this); 
      		this.add("North",jbtnNew);
      		jp.setBackground(Color.pink);
      		this.add("Center",jp);
      		this.setSize(500,400);
      		this.setVisible(true);
      	}
      	/*메인메소드*/
      	public static void main(String[] args) {
      		Reload1 r1 = new Reload1();
      	}
      	@Override
      	public void actionPerformed(ActionEvent e) {
      		Object obj = e.getSource();
      		if(obj == jbtnNew) { //새로고침 누르면, 창 끄고 조회버튼을 가운데에 띄워줘.
      			Container cp = this.getContentPane();
      			cp.remove(jp);
      			JPanel jpCopy = null;    //candidate 찜하기
      			jp = null;
      			jp = new JPanel();         //새로 생성되는 여기서 가비지 캘릭터가 위 값을 회수해가서 candidate 상태에 빠짐. 
      			jpCopy = jp;                //치환하기(이 부분 연습 필요)
      			jpCopy.setBackground(Color.gray);
      			this.add("Center",jpCopy);
      			this.revalidate();
      			this.repaint();
      		}
      	}
      }
  • 생성자
    • 생성자의 파라미터를 통해 서로 다른 클래스가 서로 의존관계를 맺고 하나의 기능을 서비스할 수 있음.
    • 생성자도 파라미터를 여러개 가질 수 있음. → 오버로딩

강의 내용

  • DataSet
    • 👉 변수-배열-객체배열-자료구조(컬렉션프레임워크, utill패키지, List, Map, Set 등)-쿠키/세션 🚩
  • 2차배열
    • 1차 배열이 1열의 공간이라면, 2차 배열은 table 형식, matrix(행렬)
    • 표현 : 대괄호 두 개
    • 가로세로의 갯수
      • 배열명.length는 로우의 갯수임
      • 배열명[로우].length는 컬럼의 갯수임
    • 원시형
      public static void main(String[] args) {
      		/*면이 존재하는 것처럼 코드 전개*/
      		int is[][] = new int [2][3];       //3*3 테이블임. 가로는 0부터 시작!
      		is =new int[][] {{1,2,3},{4,5,6}}; //선언, 생성(초기화) 동시에
      //		is ={{1,2,3},{4,5,6}}; //문법 오류
      		System.out.println(is.length);     //가로 row갯수
      		System.out.println(is[0].length); //세로 colum갯수 - 컬럼명과 변수명 통일(for 연속성)
      		for(int x=0;x<is.length;x++) {   //x는 로우값(0,1) -> 배열의 주소번지와 첫번째 주소번지의 값은 같음
      			for(int y=0;y<is[x].length;y++) {
      				System.out.println("is["+x+"]"+"is["+y+"] : "+is[x][y]);
      			}
      		}
      	}
    • 참조형 포함
      • 이미지

  • 상속

    • 자바는 단일 상속만 extends 가능하다. 다중 상속은 불가하다. 다중상속의 단점을 보완하기 위해 인터페이스가 제공됨.
    • 부모가 가진 전변과 메소드 모두는 상속받은 클래스에서 호출이 가능함(단, 원형 훼손x)
    • 자손을 인스턴스화 하더라도 먼저 부모 생성자가 호출됨
    • 동일한 메소드가 부모, 자손 둘 다 있을 때, 부모 메소드는 shadow method(그림자, 호출x)가 된다.
    • 상속받은 클래스가 더 누릴 수 있다 vs 자손클래스가 더 누릴 수 있다.
    • 여러 계층의 상속관계를 가진 클래스의 경우, 가급적 하위 클래스를 상속받는 것이 더 많은 변수와 메소드 누릴 수 있다.
      class Super{
      	int i;
      	public Super() {
      		System.out.println("Super() 호출");
      	}
      	public void methodA() {
      		System.out.println("methodA 호출");
      	}
      	public void methodA(int i) {
      		System.out.println("Super methodA(int i) 호출");
      	}
      }
      class Sub extends Super{
      	public Sub() {
      		i=2; //상속받은 Super의 전변 재정의 가능함. 어떻게?
      		System.out.println("Sub() 호출");
      	}
      	@Override
      //	public void methodA(double i) { //부모의 메소드의 파라미터값이 변화하는 것을 JVM이 확인하고 있음. 
      	public void methodA(int x) {
      		System.out.println("Sub methodA(int x) 호출");
      	}
      }
      public class Extends1 {
      	public static void main(String[] args) {
      		Sub sub = new Sub();       //상속으로인해 부모의 생성자 먼저 거치기 때문에 Super가 먼저 호출이 됨. 
      		System.out.println(sub.i);   //재정의 된 2로 출력이 됨. 
      		sub.methodA(0);              //오버라이드로 인해 부모의 메소드(shadow method)가 아닌 자손의 메소드로 출력이 됨.
      		//부를 생성해서 출력하면? 출력이 됨. 
      		Super super1 = new Super();
      		super1.methodA(30);
      	}
      }
  • API

    • Container
    • DefaultTableModel
      • DataSet관련 API로 로컬에서 처리하는게 아니라 서버를 경유하여 화면을 처리
      • 서버를 경유하는 것 만으로도 동기화 문제는 해결
    • remove
  • 용어정리

    • 오라클서버(데이터 영속성 보장) : 요청받은 정보를 서비스해줌.
    • RDBMS(관계형 데이터베이스 관리 시스템)
      • 키(key)와 값(value)들의 간단한 관계를 테이블화 시킨 매우 간단한 원칙의 전산정보 데이터베이스이다
      • 모델링
        • 논리적 모델링
        • 물리적 모델링
      • 관련용어
        • 로우(튜플)
        • 컬럼(어트리뷰트)
        • 릴레이션
      • 제약
        • pk(기본키) : 식별자로 이용하기 적합한 속성의 집합
        • fk(외래키, 조인 시 사용) : 한 테이블의 필드 중 다른 테이블을 식별할 수 있는
    • DML(Data Manipulation Language) : DB 내 데이터를 조작하는데 사용되는 SQL의 하위 집합
      • SELECT: 이 문은 데이터베이스에 있는 하나 이상의 테이블에서 데이터를 검색하는 데 사용됩니다. 예를 들어 다음 SQL 쿼리는 "customers" 테이블에서 모든 레코드를 검색합니다.

      • INSERT: 이 문은 테이블에 새로운 데이터를 삽입하는 데 사용됩니다. 예를 들어, 다음 SQL 문은 "customers" 테이블에 새 행을 삽입합니다.

      • UPDATE: 이 문은 테이블의 기존 데이터를 수정하는 데 사용됩니다. 예를 들어 다음 SQL 문은 "customers" 테이블에서 ID가 1인 고객 주소를 업데이트합니다.

      • DELETE: 이 문은 테이블에서 데이터를 삭제하는 데 사용됩니다. 예를 들어 다음 SQL 문은 "customers" 테이블에서 ID가 1인 고객을 삭제합니다.

        고객 SELECT * FROM;
        INSERT INTO 고객(ID, 이름, 주소) VALUES (1, 'John Smith', '123 Main St');
        고객 UPDATE SET 주소 = '456 Park Ave' WHERE id = 1;
        고객에게서 DELETE FROM WHERE id = 1;

강의 마무리

  • 네트워크 관련 개발 내용 확인
    • 네이버개발자사이트
      • 캡차 → 개발가이드 → java 선택하여 code 리뷰

0개의 댓글