본문 바로가기
명품자바 5장 상속 서브 클래스는 슈퍼 클래스의 private 이외의 멤버에 접근 가능 animal, person 클래스가 잇을때 super(x, y) 로 person 클래스의 상위 클래스인 animal(x,y)를 호출할 수 있다 업캐스팅 - 서브 클래스의 객체에 대한 레퍼런스를 슈퍼 클래스 타입으로 변환 업캐스팅은 슈퍼 클래스가 서브 클래스 객체를 가리킨다 Peroson p; Student s = new Student(); p = s; 위에서 만든 p는 s를 가리키지만 Person 클래스의 멤버만 접근 가능하다 업캐스팅시 명시적으로 타입을 변환 하지 않아도 된다, Student 객체는 Person 타입이기 때문이다 다운캐스팅 - 업캐스팅과 반대로 슈퍼 클래스 레퍼런스를 서브 클래스 레퍼런스로 변환 다운캐스팅을 하면 .. 2023. 12. 26.
정규화 1정규화 - 컬럼이 원자값을 갖도록 테이블을 분해 2정규화 - 제1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것 완전 함수 종속은 기본키의 부분집합이 결정자가 되지 않게 하는 것 3정규화 - 제2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해 이행적 종속이라는 것은 A -> B, B -> C가 성립할 때 A -> C가 성립되는 것을 의미 위와같은 테이블에서 수강하는 강좌가 바뀌면 수강료도 갱신을 해줘야하는 번거로움이 있다 이행적 종속을 제거해서 학생 번호를 통해 강좌 이름을 참조하고, 강좌 이름으로 수강료를 참조하도록 테이블을 분해했다 BCNF 정규화 - 제3 정규화를 진행한 테이블에 대해 기본키를 제외하고 후보키가 있는 경우 후보키가 기본키를 종.. 2023. 12. 26.
명품자바 4장 default - 다른 패키지에서는 접근 불가능 static - static 메서드는 static 멤버만 접근 가능하다, 객체 없이도 static 메서드는 존재하기때문에 this를 사용 불가능하다 final 클래스 앞에 사용하면 상속 불가능한 클래스 final 메서드는 오버라이딩 하지 못하고 무조건 상속받아서 사용하는 메서드 final 필드는 한번 초기화되면 값을 변경할 수 없는 상수가 된다 ShareClass 클래스에서 pi라는 상수를 만들면 다른 클래스에서는 ShareClass.pi 로 사용할 수 있다 자바 이론 문제 3번 Book [] book = new Book [10]; 으로 객체 배열을 만들면 바로 Book이 10개 생성되지 않는다, book은 배열에 대한 레퍼런스이고 new로 할당을 해줘야 .. 2023. 12. 23.
데베기초 기말 대비 정리 -- 7-1 employees 테이블의 last_name이 'Da_haan'인 직원과 salary가 동일한 직원, 단일 행 서브쿼리 select * from employees where salary = (select salary from employees where last_name like 'De Haan'); select * from employees where salary = (select salary from employees where last_name like 'De Haan'); -- 7-2 다중 행 서브쿼리 employees 테이블에서 department_id 별로 가장 낮은 salary에 해당하는 직원, 다중 행 서브쿼리 select * from employees e where e.sal.. 2023. 12. 20.
데베기초15주차 무결성 제약조건 복습 외래키 제약조건 - 시험에 나온다 cascade를 쓰지 않고 제약조건 비활성화할떄 먼저 부모 테이블이 참조하는 자식의 제약 조건을비활성화하고 부모 테이블의 제약조건을 비활성화해야한다 위의 과정은 여러 단계를 거치기에 번거롭다 cascade를 사용해서 제약조건을 비활성화하면 참조하는 외래키 제약 조건들도 비활성화된다 ppt 10(2) 35쪽부터 쭉 실습 - 제약조건, cascade쪽 내용 CREATE TABLE DEPT01( DEPTNO NUMBER(2) CONSTRAINT DEPT01_DEPTNO_PK PRIMARY KEY, DNAME VARCHAR2(14), LOC VARCHAR2(13) ); CREATE TABLE EMP01( EMPNO NUMBER(4) CONSTRAINT EM.. 2023. 12. 14.
안드교양 15주차 책 실습 10-2 진행, 연습문제 투표결과 보여주는거 하기 연습문제 인텐트 값 넘겨서 계산기 만드는거 시험에 낸다 oncreate 위에 변수 선언하면 final을 붙여줘야한다 style="?android:attr/ratingBarStyleIndicator" 레이팅바 별 갯수 조정하는 속성 레이팅 세팅할때 setraing 메서드를 사용, 원래 레이팅을 getrating으로 가져와서 추가하는 값을 추가해줌 시험에 내는 거는 인텐트로 값 넘긴거 받아오는 타입 등을 중요하게 본다! Integer.parseInt로 string -> int 변환하는거 해보기, 시험에 나온다 2023. 12. 14.
데베 기말 시험대비 PPT 관계대수 연습문제 = 2500000; -- 3번 개발부서에 근무하는 사원의 이름과, 부서명, 봉급을 검색하라 select e.empname, d.deptname, e.salary from employee e, department d where e.dno = d.deptno and d.deptname = '개발'; -- 4번 김창섭 또는 최종철이 속한 부서이고 부서명이 기획부서인 사원명, 부서명을 검색 select empname, deptname from employee e, department d where e.dno = d.deptno and (empname = '김창섭' or empname = '최종철') and d.deptname = '기획'; -- 5번 소속된 직원이 한명도 없는 부서의 번.. 2023. 12. 12.
데베 15주차 트리거 시험에 나온다 ! 인덱스를 쓰지 않은 이상 update를 할때는 기본키만 된다. 기말엔 erd를 주고 트리거를 만드는 형태로 문제가 나온다! 쿼리문의 트리거를 보면서 이해 트리거는 남발했다간 성능이 저하되고 락이 걸릴 수 있다, 신중하게 쓰자 시험범위 조인,내장함수,외부조인,서브쿼리, 뷰, 트리거, 관계대수, db설계이론 create database tritest; use tritest; create database trianswer; use trianswer; create table goods( pronum char(4) primary key, proname varchar(20) not null, price int, stock int default 0 ); create table ordering.. 2023. 12. 8.
데베기초 14주차 외래키 제약조건 외래키는 부모테이블에서 참조가능한 값이어야한다 • 컬럼 단위로 제약 조건을 거는 방법 컬럼 하나의 정의가 끝나기 전에 제약 조건을 건다 CREATE TABLE EMP06( EMPNO NUMBER(4) CONSTRAINT EMP06_EMPNO_PK PRIMARY KEY , ENAME VARCHAR2(10) CONSTRAINT EMP06_ENAME_NN NOT NULL, JOB VARCHAR2(9), DEPTNO NUMBER(2) CONSTRAINT EMP06_DEPTNO_FK REFERENCES DEPT(DEPTNO) ); • 테이블 단위로 제약 조건을 거는 방법 복합키를 기본키로 주거나 alter 테이블로 제약 조건을 추가할때는 테이블 단위로 제약을 건다 CREATE TABLE EMP03.. 2023. 12. 7.
14주차 스피너 - 수업시간 15분정도 빠르게 하고 넘어갔는데 못들었음 파일 입출력 - 내장 메모리에 txt 파일 저장하고 읽어오기를 했다 ! 파일 입출력 시험문제 edittext로 사용자 입력을 읽어서 내장 메모리에 저장하고 그걸 읽어오는 코드, 온클릭을 잘 읽어두자 package com.example.aap; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; imp.. 2023. 12. 7.
코드 외워야될거 dfs, bfs, 크루스칼, 프림, 다잌 DFS for i in range(m) : a, b = map(int, input().split()) arr[a].append(b) arr[b].append(a) print(f"연결된 간선 정보 \n{arr[1:]}") def dfs(v): visited[v] = True print(v, ' ', end = '') for i in arr[v]: if not visited[i]: dfs(i) BFS def bfs(node): queue = [] visited[i] = 1 queue.append(i) while len(queue) != 0: v = queue.pop(0) print(v) for i in adj_list[v]: if not visited[i]: visi.. 2023. 12. 7.
컴알 기말시험대비 퀵정렬 상향식 이 코드 + 아이패드에 정리하면서 돌려보기 처음에 create heap을 잘 만들어두면 downheap 하기는 쉽다 def downheap(i, size): # print(i) while i*2 = a[k]: break # print(i, k) a[i], a[k] = a[k], a[i] i = k print('다운 힙 : \t', end=' ') print(a[1:]) def create_heap(a): hsize = len(a) - 1 # print("현재 힙 사이즈", hsize) for i in reversed(range(1,hsize//2+1)): # print("현재 i 인덱스", i) downheap(i,hsize) def heap_sort(a): N = len(a) - 1 fo.. 2023. 12. 4.
데베 14주차 시험범위 내장함수 ~ 배운데 트리거 : 특정 조건이 만족하면 저절로 실행되는 함수 행트리거 for each row : 각각 실행 트리거 이벤트 after : 동작 수행 후 before : 동작 수행 전 문장 트리거 insert update delete 문 을 수행할떄 after insert on triaaa for each row begin sql 쿼리; end; 형태 트리거를 이용해서 한 테이블에 insert를 하면 다른 테이블은 delete나 update 등을 하게 할 수 있다 위의 트리거를 적용하기 위해서 상품, 주문 테이블을 만들어본다 create database examtri; use examtri; create table goods( proname varchar(20) primary key, .. 2023. 12. 1.
컴알 14주차 시험내는거 중간 절반 힙정렬 - 제자리정렬(상향식 정렬), 삽입식이 아니라 상향식이다 루트를 삭제하고 힙 속성을 복원하는 것 까지가 한 단계이다 퀵정렬 - 비균등, 시작값과 high 값을 교환한다! avl 인접리스트, 인접행렬로 각각 탐색하는거 인접 행렬은 배열 형태라서 인덱스가 작은 정점부터 돈다 인접리스트는 오름차순, 내림차순 두개 다 된다 실습문제로 푼 문제 다시보기 dfs, bfs는 탐색 결과만 내기 크루스칼 - 최종값만 동일한 가중치가 있을때는 인덱스가 작은 정점 부터 방문, 최종 결과를 물어본다 프림 - 중간 과정도 필요하다 접근을 시작하는 임의의 정점을 주고 연결이 어떻게 되는지, 가중치가 같으면 인덱스가 작은 정점부터 방문 다익스트라자 - 중간 과정도 필요하다 최단거리, 최단 경로가 잇으면.. 2023. 12. 1.
데베기초 13주차 데이터 무결성 컬럼 단위로 제약조건 적용시키기 널 제약조건 create table emp02( empno number(4) not null, ename varchar2(10) not null, job varchar2(9), deptno number(2) ); empno, ename 컬럼은 널이 들어가면 안되게 제약 조건을 설정했다 insert into emp02 values (123, null, 'student', 1); insert into emp02 values (null, null, 'student', 1); 이렇게 삽입을 하려고 하면 아래처럼 에러가 뜬다 ORA-01400: cannot insert NULL into ("SQL_CLPLAFNUOGZMKAEMGOGGYFFRA"."EMP02"."EMP.. 2023. 11. 30.
안드교양 13주차 1교시 리스트뷰, 어댑터뷰를 한 것 같은데 수업을 안들었음 2교시 그리드뷰 xml dialog main package com.example.aap; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; public c.. 2023. 11. 30.
데베 13주차 데베 쪽지시험 문제 create database company; use company; create table department( deptno int not null primary key, deptname varchar(20) unique, floor int ); create table employee( empno int not null primary key, empname varchar(20) not null, title varchar(20) default '사원', manager int, salary int, dno int, foreign key(dno) references department(deptno) on update cascade on delete cascade ); INSERT INTO .. 2023. 11. 24.
컴알 13주차 최소신장트리 - 무방향 가중치 그래프 끊어지거나 포함안되는 노드가 없음 크루스칼 유니온 - 파인드를 통해서 서로소 집합, 부모를 찾아서 하는 연산 크루스칼 - 회차가 일어나지 않게 모든 정점을 연결한다 정점 0,1은 9의 가중치를 가지는 간선으로 연결 프림 최소가중치, 트리에 연결된 간선의 가중치로 가중치를 계속 갱신하면서 정점을 추가 양방향으로 연결되있다 0번 정점과 1번 정점의 간선은 가중치 9 0번 정점과 2번 정점의 간선은 가중치 10으로 연결 다른 정점들도 이런 식으로 연결되었다 코드에서는 정점의 갯수만큼 루프를 돌면서 방문하지 않은 가중치가 가장 작은 정점을 찾아서 방문하고 방문한 정점과 인접한 정점(리스트에 들어있는 정점)의 가중치를 갱신한다 시험에서는 코드x, 임의의 시작정점을 주고 최소신.. 2023. 11. 24.
데베기초 12주차 DML에 대해서 배운다 dml 실습을 위한 테이블 livesql에서 만들기 create table dept01 as select * from scott.dept where 1 = 0; create table sam01 as select empno,ename,job,sal from scott.emp where 1 = 0; insert into sam01 values (1000,'apple','police',10000); insert into sam01 values (1010,'banana','nurse',15000); insert into sam01 values (1020,'orange','doctor',25000); insert into sam01 values (1030,'very', null,25000.. 2023. 11. 23.
안드교양 12주차 7장 보고 정리하기.. -> 과제 구글링으로 정리햇다 메인액티비티 package com.example.aap; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.DialogInterface; import android.os.Bundle; import android.view.Display; import android.view.Gravity; import android.view.View; import android.view.WindowManager; import android.widget.Button; import android.widget.EditTex.. 2023. 11. 23.