검색 키워드 

링크는 붙여넣기 하니 적용이 안되어서 볼꺼면 코드업에 가서 확인하자

#2023년 x월 x일 x회 차 수업 
## 유용한 개념
## 수업 내용
## 참고링크
## 오늘 꼭 기억해야 할 것

 

 

 

 

# 수업 시작 전 준비

```
구글,깃허브,리플,알고리즘 로그인,띄워놓기
```

# 2023년 2월 28일 1회 차 수업

- 목록 1
  - 목록 1-1
- 목록 2

## 유용한 개념

```
 - 문제 해결(내가 뭘 모르지?) -아예 모름(구글링) -내가 배운것(머리쓰기)
 - 알고리즘 해결 -예측,가정,코드파악,run 해보기
 - 공부시간 수업5시간 + 3시간 자습 + @ 1.에러나면 에러 메세지 필수 체크(구글링) 2.에러 고치기. 3.다시 실행 해보기.

 - 자바에서의 =는 '넣겠다'다. '같음'의 의미는 == (비교연산자 검색)
변수 안에는 값을 오직 1개만 넣을 수 있다 (x=10 -> x=15는 변수 2개가 아닌 덮어쓰기가 되어 15가 되며 10은 비활성화 된다.자바는 위에서 아래 순서로 읽기 때문이다.)
```

## 수업 내용

```
 - int 변수명에 숫자로 시작,숫자 자체는 안된다(중간에 들어가는 ab12af 등은 된다.)
 - value 스위칭,스왑 (값 뒤바꾸기) 중요
```

## 참고링크

```


## 꿀팁

```
- 위키는 이력서 제작에 용이하다.
- 1일차 ~~ 56일차 - 자소서 공부 첫 날부터 끝까지 기록의 근거다.
- Spring -> 포트폴리오 -> 취업
 (블로그,깃허브,유트브) -> 추가 + @ 사항들.
```

---

### 블록

```

블록
```

# 2023년 3월 2일 2회 차 수업

## 유용한 개념

```
연산자 우선순위는 그때마다 찾아본다.
정수 비교연산자는 그림판에 x축을 그려서 부등식으로 검산.
자바 서식지정자, 데이터의 기본형 참조형 외우기.

반복문의 3가지 구성요소
초기(값)
(종료)조건
step(보폭)
3가지 중 1개라도 없으면 반복문은 실행되지 않는다.
```

## 수업 내용

```
반복문은 조건문을 기본으로 한다.
프로그래밍 언어의 발전은 불편함에서 발전한다.

```

## 참고링크



## 꿀팁

```

```

# 2023년 3월 3일 3회 차 수업

## 유용한 개념

```

이중 반복문에서

안쪽은 분침 바깥쪽은 시침에 비유 할 수 있다.

안쪽이 완전하게 다 돌아야 바깥쪽으로 돌고

조건이 거짓인 경우에 빠져 나온다.

int[] arr = new int[3]; // int들 만 들어갈 수 있는 객체랑
연결 될 예정인 arr
int 3개 들어갈 수 있는 객체를 new 키워드를 통해 하나 만들겠다
객체 내부의 리모컨을 복사해서 arr변수에 넣겠다



. -> ~~의 의미 // arr의 길이 ->arr.lenth


```

## 수업 내용

런타임에러 vs 컴파일 타임 에러
(읽어야 앎) (문법적 오류 실행하나 마나)



자바 에러 vs 자바 익셉션
에러:실행하기 전 문제발생
익셉션 : 실행하고 후 문제발생

## 참고링크



## 꿀팁

```
객체에 대한 비유

객체(object)란?
객체(object)란 실생활에서 우리가 인식할 수 있는 사물로 이해할 수 있습니다.

객체 지향 프로그래밍(OOP, Object-Oriented Programming)
객체 지향 프로그래밍에서는 모든 데이터를 객체(object)로 취급하며, 이러한 객체가 바로 프로그래밍의 중심이 됩니다.



객체(object)란 간단히 이야기하자면 실생활에서 우리가 인식할 수 있는 사물로 설명할 수 있습니다.

이러한 객체의 상태(state)와 행동(behavior)을 구체화하는 형태의 프로그래밍이 바로 객체 지향 프로그래밍입니다.

이때 객체를 만들어 내기 위한 설계도와 같은 개념을 클래스(class)라고 합니다.

 # 클래스(class)
자바에서 클래스(class)란 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용됩니다.

자바에서는 이러한 설계도인 클래스를 가지고, 여러 객체를 생성하여 사용하게 됩니다.



클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method)로 구성됩니다.

즉, 필드(field)란 클래스에 포함된 변수(variable)를 의미합니다.

또한, 메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있습니다.

 # 인스턴스(instance)
자바에서 클래스를 사용하기 위해서는 우선 해당 클래스 타입의 객체(object)를 선언해야 합니다.

이렇게 클래스로부터 객체를 선언하는 과정을 클래스의 인스턴스 화라고 합니다.

또한, 이렇게 선언된 해당 클래스 타입의 객체를 인스턴스(instance)라고 합니다.

즉, 인스턴스란 메모리에 할당된 객체를 의미합니다.



자바에서는 하나의 클래스로부터 여러 개의 인스턴스를 생성할 수 있습니다.

이렇게 생성된 인스턴스는 독립된 메모리 공간에 저장된 자신만의 필드를 가질 수 있습니다.

하지만 해당 클래스의 모든 메소드(method)는 해당 클래스에서 생성된 모든 인스턴스가 공유하게 됩니다.

클래스의 예
클래스(class)

- 차(Car) : 설계도

스포츠카



필드(field)

- car.modelName = "람보르기니"

- car.modelYear = 2016

- car.color = "주황색"

- car.maxSpeed = 350



메소드(method)

- car.accelerate()

- car.brake()



 #인스턴스(instance)

- 내 차(myCar) : 설계도에 의해 생산된 차량

- 친구 차(friendCar) : 설계도에 의해 생산된 또 다른 차량



즉, 자동차 인스턴스는 모두 위와 같은 필드와 메소드를 가지게 될 것입니다.

하지만 각 인스턴스마다 가지고 있는 프로퍼티의 값은 전부 다를 것입니다.

 #메소드(method)
자바에서 클래스는 멤버(member)로 속성을 표현하는 필드(field)와 기능을 표현하는 메소드(method)를 가집니다.

그중에서 메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있습니다.



자바에서 메소드를 정의하는 방법은 다음과 같습니다.

문법
접근제어자 반환타입 메소드이름(매개변수목록) { // 선언부

    // 구현부

}



1. 접근 제어자 : 해당 메소드에 접근할 수 있는 범위를 명시합니다.

2. 반환 타입(return type) : 메소드가 모든 작업을 마치고 반환하는 데이터의 타입을 명시합니다.

3. 메소드 이름 : 메소드를 호출하기 위한 이름을 명시합니다.

4. 매개변수 목록(parameters) : 메소드 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시합니다.

5. 구현부 : 메소드의 고유 기능을 수행하는 명령문의 집합입니다.



자바에서는 하나의 클래스에 같은 이름의 메소드를 둘 이상 정의할 수 없습니다.

하지만 메소드 오버로딩(overloading)을 이용하면, 같은 이름의 메소드를 중복하여 정의할 수 있습니다.

메소드 오버로딩이란 매개변수의 개수나 타입을 다르게 하여 같은 이름의 또 다른 메소드를 작성하는 것입니다.



이러한 메소드 오버로딩을 사용함으로써 메소드에 사용되는 이름을 절약할 수 있습니다.

또한, 메소드를 호출할 때 전달해야 할 매개변수의 타입이나 개수에 대해 크게 신경을 쓰지 않고 호출할 수 있게 됩니다.


```

# 2023년 3월 6일 4회 차 수업

## 유용한 개념

```
객체 => 폴더
클래스 => 설계도 (객체와 설계도는 별개)
필드 =>클래스 안의 전역변수 attribute
this => 리모콘

[접근제어자(public, private 등)] [static, final 등] 자료형 변수명 [= 초기값] ;

필드는 위와 같이 선언한다.

1. 필드는 메소드 및 생성자 밖에서 선언되고, 값을 할당하지 않으면 초기값이 자동으로 할당된다.
2. 필드를 선언하면 클래스 전역에서 사용이 가능하다. 다르게 말하면 프로그램의 시작부터 종료까지 메모리상에 남아 공간을 차지한다. 따라서 메소드에서 공통으로 필요한 필드만 선언하여 사용하는게 좋다.
3. 메소드에서 필드와 동일한 변수를 정의하면 메소드의 변수가 우선순위가 높다. 이때 필드의 값을 출력하려면 this.을 이용하면 된다.

속성(단순 데이터) - attribute 저장 데이터 명사형 특징
property
기능(실행 데이터) - method   실행 데이터 동사형 특징
function

```

## 수업 내용

```
new 한개당 객체 1개 생성
class 는 설계도 일 뿐이다.

ex
class main{

}

class 김철수{
    int age;
    boolean isMarried;
    String name;

}
이건 객체 0개 설계도만 2개

new 김철수(); <- 틀린코드 아님 리모컨 연결을 안했을 뿐
김철수 a = new 김철수(); => 읽는 방법
1.설계도와 a(리모컨을)변수를 new(객체) 김철수와 연결하겠다.
2.김철수 a 까지만 => a라는 변수를 김철수 닮은 객체와 나중에 연결할꺼다.


설계도에 있는 능력을 뽑아쓰고 싶으면(객체화를 안하고)

메서드에 static을 붙여준다.

선택지
1.객체화를 해서 쓸것인지
2.static을 붙여서 설계도를 끌어와 쓸것인지
-->static은 정적 메서드라고 한다. 앞으로 배울 것.
-->비교되는 개념은 인스턴스.
-->남발하면 쓰레기 값이 생긴다.

인자(아규먼트)-매개변수(파라미터) 는 타입과 갯수가 같아야한다.
(자동 형 변환이 가능하거나)
둘이 이동 공간은 같아야한다 자바로치면 소괄호 안쪽.
매개변수는 함수의 안과 밖을 연결해주는 매개체다.
->class 와 class
```

## 참고링크


## 오늘 꼭 기억해야 할 것

```
static은 static끼리 통신이 가능하다.

메인 클래스 vs 메인 클래스가 아닌 것
->사용처가 다르다
전역변수 : 전역공간 (함수 -method 외부)에서 생성,수명이 더 길다
프로그램 시작- 끝
지역변수 : 지역공간 (함수 내부)에서 생성,수명이 더 짧다
함수 시작 - 끝
매개변수 : 지역변수의 일종, 함수의 내부와 외부를 연결해주는 매개체
인자 : args,인수,매개변수로 전달되는 데이터

키워드:변수의 생명주기,변수의 스코프와 변수의 라이프타임,변수의 라이프 싸이클 -> 다 같은 말 구글링하기

매개변수의 개수와 인자의 개수는 일치 해야한다.
매개변수의 타입과 인자의 타입은 일치 해야한다.

클래스 변수와 인스턴스 변수
클래스 영역에 위치한 변수 중에서 static 키워드를 가지는 변수를 클래스 변수(static variable)라고 합니다.

그리고 클래스 영역에 위치한 변수 중 static 키워드를 가지지 않는 변수는 인스턴스 변수(instance variable)라고 합니다.
또한, 메소드나 생성자, 초기화 블록 내에 위치한 변수를 지역 변수(local variable)라고 합니다.

알아두면 좋은- 동적할당(c언어,변수의 생명주기 내가 조절가능 메모리 활용의 극한) vs 정적할당(자바, 알아서 해준다)

```

# 2023년 3월 7일 5회 차 수업

## 유용한 개념

```
#클래스는 '객체를 생성하기 위한 틀 '이며 '클래스는 속성과 기능으로 정의 되어있다' ->객체 지향론적 관점

#프로그래밍적인 관점에서의 클래스
1.변수 하나의 데이터를 저장할 수 있는 공간
2.배열 같은 종류의 여러 데이터를 하나의 집합으로 저장 할 수 있는 공간
3.구조체 서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간
4.클래스 데이터와 함수의 결합(구조체+함수)


개념, 배열과 ArrayList, 제너릭
개념, ArrayList 내부작동원리
```

## 수업 내용

```
void - return x

나머지 - return o

함수당 1번만 가능

-키워드-
다형성

메소드 오버로딩 (클래스 내에 같은 이름의 메소드를 여러개 생성)

오버라이드(상속에서 메소드 덮어쓰기)
---

상속(extends) 형변환 과정(캐스팅)에서 기능 소실이 될 수 있다.

그래서 쓰는게 추상(abstract)

추상 메소드가 하나라도 들어가 있으면 추상 클래스로 만들어야함
추상 메소드는 바디를 가질 수 없다.

추상클래스 -> 객체화 x

부모가 추상 메소드를 갖고 있으면 받는 자식 클래스는 오버라이드(덮어쓰기)를 해야 한다.


인터페이스(interface) -> 순도 100퍼센트 추상 클래스
안에있는 메소드 abstract 안붙여도 자동 추상 메서드들임
(붙여도 상관은 x)
-> 바디를 가질 수 없다.


인터페이스 상속(100퍼센트 추상클래스)을 받는 자식 클래스는 extends가 아닌
implements를 쓴다
-> 자식 메소드 앞에는 모두 퍼블릭을 붙여줘야 한다

extends의
다중 구현,다중 상속은 자바에서 불가능하다
무슨 데이터를 골라야 하는지 모르기 때문이다.

implements의 다중 상속은 가능
모두 추상이라(깡통취급) 오버라이드 시키면 끝이기 때문
안 헷갈려도 되는 상황


생성자(constructor)
생성자는 자동실행 함수(자동실행 메서드)
class 이름과 같은것이어야 한다
리턴타입 x void x

ex)

class 사람{
   사람(){

   }
}
생성자의 실행시점은 객체가 생성되면서 자동 실행
->new 마다 실행
->객체가 생성이 안된다면 실행이 안된다.

상속을 받았으면 부모의 생성자를 먼저 실행한다 규칙.

git
64-bit Git for Windows Setup.
git 입문
작업 1, 프로젝트 준비 및 git 업로드
작업 2, 명령어 입력
작업 3, 게시물 작성 기능 추가
```

## 참고링크

## 오늘 꼭 기억해야 할 것



한계가 없는 배열 다루기.

추상 수업 페이지 가서 복습하기.
->상속,추상,인터페이스,생성자 개념 잇기.

주의)oop특징의 추상화와 문법 추상은 다른것!

<a href="https://mozi.tistory.com/466" target="_blank"> set,get 메서드 사용 방법과 이유</a>

# 2023년 3월 8일 6회 차 수업

## 유용한 개념

```
생성자는 시작하자마자 실행 되었으면 했을 때 쓰는 것.

```

## 수업 내용

```
static 값은 클래스 하나에서만 존재
-> new 붙인 객체들에게는 없다

static 생성자는 static{} 로 써주면 된다 (f11로 바로 실행가능)


이미 만들어진 클래스 도구들은 import를 사용해서 당겨오자.
->안그러면 패키지에 클래스를 일일히 만들어야 하는 번거로움이 생김


작업 4, 게시글의 유무 판별
작업 5, 게시물 목록 기능 구현
작업 6, 게시물 상세보기 구현중
작업 7, 게시글 상세보기 글의 유무 판단
작업 8, 게시물 상세보기 기능 구현
작업 9, 게시물 작성시 날짜와 시간 정보 저장
작업 10, 게시물 삭제 기능 추가(index 활용)

```

## 참고링크

## 오늘 꼭 기억해야 할 것



깃허브 사용법
깃배쉬 사용법

# 2023년 3월 9일 7회 차 수업

## 유용한 개념

```


```

## 수업 내용

```
작업 11, 게시글 수정 기능 및 조회수 구현
작업 12, 게시글 테스트데이터 생성
작업 13, ArrayList 내에서 특정 게시물을 찾는 메서드 구현, 중복제거
작업 14, 게시글 검색 기능 추가(제목만)
작업 15, 회원가입 기능 구현중, 아이디 중복체크

```

## 참고링크

## 오늘 꼭 기억해야 할 것

```
split ,startWith 검색
'자바 현재 날짜' 검색
자바 'Arraylist 요소 삭제' 검색

자바'startWith'
자바 'split'
자바 '문자열을 숫자로 변환'

CRUD 검색 자바에 대한 개념에 대입해서
문제 해결 나눠서 하기
TODO list 나누기
equals 랑 연산자 == 비교
```

글 작성
글 리스트
글 상세보기
글 수정
글 삭제

테스트 데이터

깃허브 업로드

시험문제

# 2023년 3월 13일 8회 차 수업

## 유용한 개념

## 수업 내용

기능이 늘어나면 리펙토링(구조개선)

Main
App
-articleController
-memberController

-ArticleService
-MemberService

-ArticleDao
-MemberDao
DB(자바에선 어레이 리스트)

...하위 폴더로 세세히 나눠버림(Model View Controller)

작업 16, 회원가입 기능 구현, 비밀번호 확인
작업 17, 리팩토링,구조개선,패키지분리
작업 18, MemberController 추가
작업 19, ArticleController 추가
작업 20, App 클래스 내부에서 하던 기능실행을 각각의 컨트롤러 내부로 이전,App 의 간소화

## 참고링크

## 오늘 꼭 기억해야 할 것

소프트 웨어 디자인 패턴 검색
MVC 모델 뷰 컨트롤러 검색
상속 개념 심화

# 2023년 3월 14일 9회 차 수업

## 유용한 개념

## 수업 내용

세선-사용자 정보를 저장
작업 21, articles,members를 각 컨트롤러로 이전
작업 22, 로그인 기능 구현, 중복로그인 허용
작업 23, member profile, 로그아웃,로그인 상태 체크
작업 24, loginedMember, isLogined를 Controller로 이전, Ac,Mc 둘 다 사용 가능 하도록
작업 25, 게시물 작성시 작성자에 관한 정보를 함께 저장,memberId
작업 26, 로그인, 로그아웃 체크가드를 App 클래스에 추가, 컨트롤러 내부에서 삭제

## 참고링크

## 오늘 꼭 기억해야 할 것

TODO
오늘 결과물에서
article list에 작성자의 이름이 노출 되도록 만들기

# 2023년 3월 15일 10회 차 수업

## 유용한 개념

## 수업 내용

작업 27, 게시물 리스트에 작성자 이름이 나오도록 처리
작업 28, 한번 사용된 게시물의 번호가 재사용 되지 않도록 처리
작업 29, 로그인시 필수정보 입력하도록 처리
작업 30, 게시물 서비스 도입

## 참고링크

## 오늘 꼭 기억해야 할 것

게시글
게시글 작성 article write
게시글 목록 article list
게시글 상세보기 article detail
게시글 삭제 article delete
게시글 수정 article modify

회원
회원가입 member join
로그인 member login
로그아웃 member logout
profile member profile
회원정보수정
회원탈퇴

MVC
리팩토링
최적화

# 2023년 3월 16일 11회 차 수업 -> DBMS랑 섞어서감

## 유용한 개념

## 수업 내용

## 참고링크

## 오늘 꼭 기억해야 할 것

# 2023년 3월 17일 12회 차 수업

스프링 시작

'java > java필요한 지식' 카테고리의 다른 글

자바 예외처리 Try Catch 문  (0) 2023.04.10
디자인 패턴이란 뭘까?  (1) 2023.03.14
MVC,Model-View-Controller 란 뭘까?  (0) 2023.03.14

+ Recent posts