Java - 인터페이스를 구현하는 위치
구현하고있는 곳에 인터페이스를 위치해야한다. -> 전 게시글을 다시 바꿔보자.
구현하고있는 곳에 인터페이스를 위치해야한다. -> 전 게시글을 다시 바꿔보자.
일부 기능 단위의 코드를 분리하는 경우
나중에 c로 대체도 가능하게 하기 달라져야하는 부분에 대해서는 설정파일로 빼놓는것
인터페이스는 일부 구간, 기능 또는 어떤 일부 캡슐들이 교체되거나 만들어지지않았을때 대한으로 삼을수있는것이다.
인터페이스란 코드 분리를 하기위해서 나온것이다. 어떤것, 장소 시간을 접근하고자 하는 도구나 방법이다.
전 강의에서 abstrac exam 을 만들었다.
코드 집중화를 하면 유지보수에 이점이 많다. 추상화 : 서비스 집중화 ( 캡슐단위의 공통서비스) ->만들고자하는 객체가있을경우에 그런객체에대한 공통분모를 만들어서 추상화한다.
비슷한 내용을 만들 때 매번 새로 만들어야 할까 아니면 틀을 가져다쓰는게좋을까 당연히 후자일것이다.
Exam exam = new NewlecExam(); NewlecExam exam = new NewlecExam(); 자바는 참조형식 함수보다 객체 형식 함수호출을 우선시한다. point ! 참조형식이 뭐냐에 따라서 호출할수 있는 함수가 결정되고 오버라이드한 함수...
부모를 가지는 클래스는 두개 객체를 생성한다. (super, this)
Override(우선순위가 높은) 메소드
IS A 상속
재사용이란 배포된 코드를 사용하는것을 재사용이라고한다.
프로그램을 만들겠다는것은 캡슐로 구성되있는것들을 어떻게 엮어낼것인가가 프로그램의 기본 구성이다.
앞 게시글에서는 캡슐화를 완성했다.
Exam 클래스의 캡슐화 완성본이다.
Getters와 Setters 의 용도가 무엇일까?
```java
생성자란 초기화를 위한 특별한 함수이다.
캡슐을 깨지 못하게 하는 도구 : 접근 제어 지시자
또다른 문제가 발생했다. : 함수의 사용에 있어서 불편함이 생김.
객체지향 :실세계 일들을 객체를 사용해서 모델링
프로그램 실행될때 메모리를 쓰게 될텐데 2가지로 나뉜다.
동일한 이름을 가져도 오류가 나지않는다. 왜 ? 함수이름만 가지고 구별하는것이 아니라 함수이름안에 들어가있는 매개값까지 구분하는 구분자를 넣기때문에 매개값이 다르면 함수가 다른것을 인식을 한다.
배열의 크기를 넘는 수의 추가가 되면 어떻게 될까
Exam[] exams = new Exam[3] ; -> 이름표 3개만 만들어준것이다.
데이터 구조 정의 ```java public class Exam { int kor; int eng; int math; }
예제) 로또 번호 생성기
함수이름은 한글로 지정하기에 어려움이있다. (전 게시글에 한글로 작성함.)
외부에서의 변화가 영향을 줄수가 있다.
이제 모든것을 분리해볼것이다.
구조적인 프로그래밍
동일한 프로그램이지만 방법을 달리 만들 수가 있다.
예를 들어서 국어성적을 여러개 저장하기 위한 큰 저장소를 만든다고 가정하자.
단순 대입 연산자
```java import java.util.Scanner;
이스케이프 문자 설명 \b 백스페이스(backspace) \t 수평 탭 삽입 \n 새 행 삽입 ...
정수값 ex) 26 -> 0x1a 032 -> 0b11010 26L -> Ox1aL ( 앞에 ox, 0 ,0b 를 붙여서 n진수를 표현해줘야한다.)
자바는 WORA 를 구현하기 위해서 나왔다.
90년도 초반부터 시작. Green project
형식명 값의 크기 값의 범위 기본값 byte 1 바이트 0 short 2 바이트 0 ...
수직 정렬하기 align-time: flex-start | flex-end | center | baseline | stretch
justify-content와 align-itmes
순서바꾸기 order:
flex-wrap
felxt-grow / flex-shrink / flex-basis의 축약표현
flex-shrink : 아이템의 크기가 정해졌는데 그 크기보다 적어질수있는가에 대한 속성이다
flex-grow 1 -> 남은여백을 1의 비율로 나누어 가지는것. (여백을 배수로 나누어 가지기)
방향성에따라서 축방향에따라서 너비를 정하고싶을때는 flex-basic를 사용하면 된다.
앱을 닮아가는 웹의 레이아웃 기법
블록 박스의 레이아웃 방식 -> float 을 left로 변경할수있는 방식이있다.
부모의 영역을 따라가는게 바람직한데 두가지 방법이있다. inherit 그리고 100%
큰방주변에 빈공백이 생겼다. 어떻게해서 생겼는지 개발자도구를 통해서 알아보자.
가장 큰 방을 행으로 나누어서 높이를 설정한다.
reset.css (새로만듦) normalize.css (평준화 시킨것) Modernize (구버전의 브라우저를 지원하기)
스타일 외부 파일에 둬야한다.
ex)1 #h2 {color:green;} h1 {color:orange;} .h1 {color:red;} 우선순위 속성을이용한태그 >아이디 > 클래스 > 태그명
속성이 차별화 된 값을 제공해준다면 그것을 이용해서 선택하자.
Adjacent sibling selector A + B (A의 이웃한 B를 찾아라) General sibling selector A ~ B(A의 이웃한것들 중에서 B를 찾아라)
Combinators
CSS 속성들 https://developer.mozilla.org/ko/docs/Web/CSS/Reference
인라인 태그 span , a, b, u, font, strong….
블록 태그의 기본 스타일의 이해 -> 영역을 가지고 있다. <div></div > 로 감싸면 한영역이 생긴다. 너비나 높이를 지정할수있다.
링크로만 이루어져 있는 것을 nav article 이 담겨져있는 articlesection(현재만들고있는곳에는없다.) aside
아웃라인의 지역화
아웃라인 영역 비효율적인부분을 해결하기위해 시멘틱 태그가 등장했다.
문서의 메인과 ,title 문서의 header, footer 이런구조로 되어야한다.
문서를 이루고있는 콘텐츠에 대한 설명을 붙여줘야한다. (어떤목록인지 제목을 달아주는것.)
컨텐츠를 가장 작은단위의 블록을 작성하였다.
HTML 문서에서 사용되는 구조의 종류
HTML 문서의 변화 시맨틱을 지원하는 문서로서 변화 - W3C 프로그래밍 플랫폼으로의 변화- WHATWG
페이지 간의 이동을 위한 하이퍼 링크 작성
/ ./ ../
사용하지 않을 태그에 대한 호환성을 지정하기 위한 Document Type
HTML 문서의 기본 구조 :규칙
ex) 강깸
문서 편집과 콘텐츠 구분자의 필요성 콘텐츠에서 특정 문자를 HyperText 로 구분짓고싶은데 그때 표시자가 필요한데 그게 markup이다.
웹서버 :문서를 가지고있는 쪽 , 문서를 제공하는 곳 홈 디렉토리 안에 수많은 웹문서가 있다
웹은 인터넷과 다르다.
다음값을 쉽게 얻을수있는 도구 시퀀스 (자동으로 증가) -> 쿼리로 만들수도있고 도구로 만들수도있다.
중복된 레코드가 없도록 제한한다. 식별할수있는 뭔가가있어야한다.
예를 들어서 phone 에 대한 체크 제약조건을 건다고했을때
도메인 제약 조건의 꽃이라고 할수있다.
데이터가 제약이 없이 들어가게되면 유효하지 않은 데이터들이 채워질수가있다. -> 데이터에 아무 데이터가 들어갈수없게 제약을 잘걸어서 결함이없도록 제약조건을 걸자
오라클은 사용자서비스를 위한 데이터를 저장하고있어야한다. 저장할수있는 데이터베이스가 있어야한다. 그공간을 Data Dictionary라고한다.
SELECT N.ID , N.TITLE, N.WRITER_ID, M.NAME, COUNT(C.ID) CNT FROM MEMBER M RIGHT OUTER JOIN NOTICE N ON M.ID = N.WRITER_ID LEFT OUTER JOIN "COMMENT" C ON N.ID...
유니온은 컬럼이 느는게아니라 레코드(데이터)를 합치는 작업이다. (컬럼의 개수와 자료를 맞춰주면된다.)
오라클 만의 쿼리, 오라클이 과거에 사용했었던 조인문장에 대해서 알아보겠다.
데이터가 서로 포함 관계를 가지는 경우 : 담당, 구성, 연락 (자기와 자기가 합쳐짐 -2개인것처럼)
참조키를 기준으로 일치하지 않는 행동 포함시키는 조인 MEMBER LEFT/RIGHT/FULL OUTER JOIN NOTICE ON MEMBER."ID" = NOTICE.WRITER
조인 참조라는 관계를 가지고 참조하는 관계의 테이블의 원래대로 합치는 작업을 조인이라고한다.
서브쿼리를 사용하는 경우 구절의 순서를 바꿔야 하는 경우 SELECT * FROM MEMBER WHERE ROWNUM BETWEEN 1 AND 10 -> 최신 등록순으로 정렬한 결과에서 상위 열명을 원하는 ...
회원별 게시글 수를 조회하시오. 단 게시글이 2이하인 레코드만 출력하시오. SELECT WRITER_ID, COUNT(ID) FROM NOTICE WHERE COUNT(ID) <=2 GROUP BY WRITER_ID -> 오류가 난다 WHERE ...
집계함수 : SUM, MIN, MAX, COUNT, AVG
SELECT 문의 구절 SELECT , FROM, WHERE, GROP BY, HABING, ORDER BY -> 내용도 외우고 순서도 외워야한다. (순서가 바뀌면 안된다.)
반환값이 NULL일 경우에 대체 값을 제공하는 NVL(NULL, 대체값) 함수 SELECT NVL(AGE, 0) FROM MEMBERS;
현재 시간을 얻는 함수 SELECT SYSDATE, CURRENT_DATE, SYSTIMESTAMP, CURRENT_TIMESTAMP FROM DUAL;
절대값을 구하는 함수 ABS(n) SELECT ABS(35), ABS(-35) FROM DUAL;
문자열 패딩 함수 : 출력하고자 하는값이 있을경우 너비를 고정하고싶을때 쓰는것 SELECT LPAD('HELLO', 5) FROM DUAL; --패딩영역이 없기때문에 출력되지않음 SELECT LPAD('HELLO', '0') FROM DUAL; SELECT LPAD...
함수의 구분은 여섯가지로 가능하다. 문자열 함수 숫자 함수 날짜 함수 변환 함수 NULL 관련 함수 집계함수
DISTINCT
결과집합을 만들때 테이블을 조회하게되면서 ROWNUM 이라는 컬럼이 추가가된다. (왼쪽에붙는번호)
LIKE, %, _
NOT, AND , OR , BETWEEN , IN
!=, ^= <> (같지않다) , =, >, < ,>=,<= , IS NULL ,IS NOT NULL
SELECT HIT+1 HIT FROM NOTICE; HIT으로 별칭을 줘서 깔끔하게 출력했다.
insert 명령규칙 insert into values
예를들어서 MEMBER 관리하고있는 오브젝트(NOTICE) 거기추가되는 댓글등(COMMENT) , 역할자에 따른 구분 (ROLE) , 회원이여러역할을 담당할수있는 형태(MEMBER_ROLE)
```sql ALTER TABLE MEMBER MODIFY ID NVARCHAR2(50);
CHAR 형식
SQL 의 구분 DDL (CREATE, ALTER, DROP) DML (INSERT, SELECT, UPDATE, DELETE) -CRUD (가장중요) DCL(GRANT, REVOKE) -> 권한을 주거나 뺐는다.
case 7 : 성적 삭제에 대한 프로그램이다. 다른방법도 작성한다.
계좌를 생성해서 출금입금하고 목록을 보여주는 프로그램이다.
Student class
FileWriter 스트림을 이용해서 파일을 저장해서 주소를 입력받고 출력받는 프로그램을 만들것이다.
약간 게임으로 치면 보스 등장 같은 느낌같다. 내용이 이..이해는 되는데.. (되는걸까..) 아직 개개인과 친해지지도않았는데 갑자기 낯선 친구를 만난느낌이랄까.
예제)
예제)계산기 프로그램 public class Area { //필드 int type ; // 1. 정사각형, 2. 직사각형 3. 삼각형 4. 원 //생성자 //메서드 public int area1 (int x) { return x*x; } publi...
예제) public class Product { //필드 String name; int price; int quantity; int sum ; // 생성자 //메서드 (합계구하기) public void sum() { sum = price *quantity;...
예제)
예제)
배열 연습문제 -5
== 은 같다는 연산자이다. 근데 프로그램을 돌리다가 분명 같은 값인데 false 라고 찍힌적이있다.
배열 연습문제 -4
배열 연습문제 -3 ```java import java.util.Scanner;
```java import java.util.Scanner;
```java public class Sample {
예제1) if문으로 판별
do while 문
예제1) while 문과 switch 문
```java public class sum {
```java public class total {
```java public class apple {
```java import java.util.Scanner;
1+(-2)+3+(-4)+… 으로 계속더해갔을때 몇까지 더해야 총합이 200 이상인가
화씨를 섭씨로 변환하는 코드
Input 을 받아 잘처리한 후 output return 을 해준다 function의 이름은 잘 결정해야한다.
variable : 변수 ( 변경될 수 있는 값) let ( added in ES6) , Multable한 데이터 타입ㄴ디ㅏ. ex) let name = 'hi'; console.log(name) //hi 가 출력 name = 'hello' cosole....
참고 :https://youtu.be/KF6t61yuPCY
사진을 변경하는 예제이다. ```html Ex5: 엘리먼트 노드의 속성 변경 img1 img2 img3 ...
문서를 구성하는 NODE의 종류들
childNodes 내려서 썻을때 ```html Ex4: childNodes를 이용한 노드 선택 <hr/> ``` ```js // Ex4: childNodes를...
html <section id = "section3"> <h1>Ex3: Selectors API Level1</h1> <div> <input name ="x" type ="text" ...
하위 엘리먼트 선택하기 아이디를 효과적으로 부여하는방법에대해서 알아보자.
계산기 프로그램을 만드는 예제를 만들어보자
html , script를 따로따로 둬야한다. html ```html <!DOCTYPE html> Document 스팬입니다. ```
```html <!DOCTYPE html> Document
```html <!DOCTYPE html> Document
```html
스크립트 코드 작성 영역
window.location ( 주소를 스크립트언어로 조작)
변수 생명주기와 클로저
var 선언 변수는 정적인 방식으로 생성 ```html <!DOCTYPE html> Document
x, y 는 이름을 부여하고싶을때 쓰는것이고 실제 사용은 arguments 가지고 연산할수있다. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta...
1 int add(int x, int y){ return x+y; }
조건문 : if, while, do-while
산술연산자 : +, - , *, /, % 비교연산자 : <, >, <= ,>= , ==, !=, ===, !==
JON 문법에 맞게 문자열을 JAVASCRIPT 데이터 객체로 바꿔주는 JSON 파서
문자열 이여도 eval을 이용하면 출력할수있다.
javascript 의 데이터를 다루는 방법이 객체를 만들어야한다면 사용할때 쉽다고 말할수가없을것이다. -> 쉽게표현할수있는 표기법이 등장한다. json이라고한다.
키를 기반으로 데이터를 저장해야 할 때
배열 객체 -> push / pop 메소드를 이용한 데이터 관리 : Stack
일반적인 언어의 값의 종류와 변수
** 한빛 페이지를 보고 참고하여 만들었습니다. !!! **
밀키트를 판매하는 쇼핑몰을 만들었다. 로그인 로그아웃이 가능하고 로그인한 아이디로 상품후기를 작성할수있다.
음식에 관련된 상품관리이다. 상품을 등록하고 상품수정하고 아래는 상품에 대한 리뷰도 등록할수있고 삭제할수있다.
상품관리하는 프로그램이다. 상품 등록, 목록, 수정, 삭제 CURD 의 작업을 할수있다.
캠핑장관리하는 프로그램이다. ->메뉴에는 캠핑장관리 스타일관리 시설물관리가있다. -> 아직미완성 단계이다. 추가될예정임
상품정보를 보여주고 상품안의 매출관리하는 프로그램을 짜보자.
app.js ```js app.use(‘/address’, require(‘./routes/address’));
배운걸 응용해서 웹문서 api 도 다뤄보았다. content(간략한 글내용과), title 그리고 url 주소가 포함되었다. class box를 줘서 보기편하게해주었다. 이전, 다음 버튼이있고 다른 문서를 검색해볼수도있다. 뭔가 부실하고 고칠점많아보이지만 대충기능을 구현했다. 더추...
카카오개발 사이트에서 개발가이드에 도서검색에서 자료를 가져왔다. json 객체이다.
앨범목록을 불러온다.
전게시글은 목록과 정보를 보여줬지만 댓글도 보여준다.
```html 게시글목록
```html 사진목록
```html 할일목록 할일 목록 이전 ...
json 을 사용해서 게시글 관리를 만들었다.
css는 세개 메뉴 동일하다. css ```css
css는 세개 메뉴 동일하다. css ```css
css는 세개 메뉴 동일하다. css ```css
```html <!DOCTYPE html> 연습15 주소등록
회원가입 페이지만들기 ```html <!DOCTYPE html> 회원가입 회원가입 아이디 : 비밀번호 :&...
페이지 나누기 1 ```html <!DOCTYPE html> 쇼핑몰페이지
! 하고 tap 하면 기본구조가 만들어진다.(Vscode 에서 )
html 이란 웹페이지를 만들기 위한 언어로 웹브라우저 위에서 동작하는 언어다. HT - HyperText, 문서와 문서가 링크로 연결되어 있다. M - Markup, 태그로 이루어져 있다. L - Language
보면서 코드 작성하려고 하나로 합친것
```JAVA
```java
NoticeConsole ```java public class NoticeConsole {
NoticeConsole ```java private int count; public NoticeConsole() { service = new NoticeService(); page= 1; count = 0; }
```java import java.sql.SQLException;
```SQL
Main ```java
Main ```java package ex1; import java.sql.SQLException; import com.lec.app.console.NoticeConsole;
데이터 select insert, update, delete 네개를 줄여서 CRUD 라고 많이쓴다.
```JAVA public class Program4 {
입력 insert와 비슷하다.
select 가 아닐경우 결과집합이 없다. select문장은 Query 를 이용해서 ResultSet을 얻지만, insert, update, delete 조작을 할때는 Update를 사용한다. executeQuery (결과집합이 있는경우) executeUpdate( 결과...
```sql SELECT * FROM NOTICE ORDER BY ID DESC;
트랜잭션 하나의 단위로 수행되길 바라는 쿼리의 묶음 (=업무 수행단위, 논리적인 수행단위)
아주간단한 문제이다.
Class.forName(“oracle.jdbc.drever.OracleDriver”); Connection con = DriverManager.getConnection(…); Statement st = con.createStatement(); 실행도구 -> 사...
JDBC ( JAVA DATABASE CONNETED )
자바에서는 에러 이외에 예외라고 부르는 오류가 있다. 예외란 사용자의 잘못된 조작 또는 개발자의 코딩으로 인해 발생하는 오류인데 예외는 예외처리를 통해 프로그램을 종료하지 않고 정상 실행 상태를 유지되도록 할 수있다.
this 는 메서드나 생성자의 현재 개
접근 제한자
for each 문
ArrayList
오버로딩 (overloading)
클래스는 붕어빵틀 ! 객체는 붕어빵이다. 객체 : 실제로 존재하는 것. 사물 또는 개념. -> 객체가 가지고 있는 기능과 속성에 따라 다름 클래스 : 객체를 정의 해놓은 것 -> 객체를 생성하는데 사용한다.
배열
swich문 (조건 제어문)
연산자
if 문은 조건식의 결과에 따라 블록 실행 여부가 결정된다.
반복문
조건문이 여러개인 if문도 있다.
print() 과 println() 의 차이 +printf()
캠핑장 프로그램이다. 등록, 목록, 조회 (스타일,시설물 등록삭제) 로 이루어져있다.
sql 테이블 관계형모델이다.
메인은 학사관리로 1. 교수관리 2.학생관리 3.강좌관리 가있는데
Main
시간이 모자라서 완벽하게 하지는 못했다. 해야할것 매출등록 날짜 중복가능하게 처리 매출삭제 날짜와 번호두개를 받아서 삭제하기. delete 부분 null 이게 맞는건지..
Address class
캠핑장관리테이블
```sql create table tbl_account( ano int, aname varchar(20), balance int, primary key(ano) );
Student class public class Student { private String sno; private String sname; private String sdept; public String getSno() { return sno; } public ...
먼저 java3 이름으로 만들었다. 여기서 이클립스에서 연동할때 이름을 java3로 안둬서 자꾸 테이블을 만들어라고 오류가떠서 고생했다.. 첨에는 프로그램뭘 잘못건드렸는지 실행이안되서 피봤고 ..
먼저 관리자에서 ```sql /유저확인/ select username from dba_users;
데이터베이스란? 컴퓨터 시스템에 전자적으로 저장되는 구조화된 정보 또는 데이터의 조직화된 모음이다.
로그인을하면 채팅을 할수있다 (카톡과비슷하게 디자인해보았다.) 그리고 오른쪽 위 내프로필 버튼을 누르면 나의 정보를 확일할수있다.
로그인을 하면 메모장목록이나오고 메모장글을 등록가능하고 오른쪽 위 채팅을 누르면 다른 사용자간의 대화를 할수있다. 내가보낸것은 오른쪽 상대가 보낸메세지는 왼쪽에 출력된다.
28일에 했던 로그인기능에다가 채팅기능까지 더해졌다. 내가보낸메세지는 오른쪽, 상대방이 보낸 메세지는 왼쪽에 위치한다.
Firebase 를 이용해서 로그인을하고 해당아이디에 해당되는 메모를 작성할수있는 프로그램을 만들어봤다.
MVC architecture
안드로이드 어플만들기
먼저 깃허브 아이디가 필요하다 그리고 파일을 올릴 repogitory 를 생성한다.
12월이 벌써 반이상이나 흘러갔다. 이제곧 2022년이다 ! 까먹지 않기위해서 소단위 목표를 적어둬야겠다.
안녕하세요
계속 찾아보기 귀찮아서 써둔다.
SimpleDateFormat 는 날짜를 형식화하고 구문 분석하기위한 구체적인 클래스이다.
전역변수 : 하나의 클래스 내부, 메소드 밖에서 선언된 변수 매개변수 : 메소드 영역()에 선언된 변수 지역변수 : 메소드 영역{}에 선언된 변수
next() 는 공백을 기분으로 한 단어 또는 한 문자씩 입력받는다. nextLine() 은 한줄 단위로 데이터를 가져온다. 개행문자 전 모든 내용을 입력 받는다.
이클립스 팁모음
```java @WebServlet(“/hi”) public class Nana extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throw...
```java @WebServlet(“/jo”) public class Nana extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throw...
주소이동을 쉽게하기위해서 server Modules 탭에서 path를 / 로 지정하였다.
controller/Product ```java package contorller;
src/controller/CampDAO ```JAVA package contorller;
어제와 비슷하게 주소관리, 상품관리 , 사용자관리 까지 추가해보겠다.
저번 시간에는 DB 백엔드 서버와 연결하지 않고 임의의 데이터로 리액트를 연습했다면 이번주 부터는 DB와 연결해서 프론트는 리액트로 출력하자
참고 : https://studiomeal.com/archives/533
Flex 레이아웃 배치 전용으로 나온것이 Flex 이다. 간혹 flex 만 가능한 UI 가 있고 Grid 보다 사용하는것이 간단해서 적재적소로 두개를 이용하는것이 가장 좋다.
돈을 이체하는 프로그램이다. 입금은 내계좌 잔액이 증가하고 출금은 감소한다.