새싹반 수업
클래스(Class)-명사구성
객체 지향 프로그래밍에서 가장 중심적인 개념 중 하나
'객체를 생성하기 위한 틀' or '설계도'
구성: attributes(속성),methods, 생성자
이러한 속성과 행동이 결합된 하나의 독립적인 단위
Attribute(속성)
클래스가 표현하는 대상의 특징이나 상태를 나타냄
다르게 표현하면 '무엇을 가지고 있는가?'라는 질문에 답하는 부분
속성은 클래스 내부의 변수로 표현
이 변수들은 해당 클래스의 인스턴스(객체)마다 각각 다른 값을 가질 수 있음
ex)학생-나이, 성별, 반, 나이, 전공
Methods
클래스가 표현하는 대상의 행동이나 기능을 나타냄
'무엇을 할 수 있는가?'라는 질문에 답하는 부분
함수형태로 표현되며, 해당 클래스의 인스턴스(객체)가 수행 할 . 수있는 동작들을 정의
ex)학생이 하는 기능-시험,공부하기, 교실이동
생성자
객체를 생성할 때 호출되는 특별한 메서드
객체의 초기화를 담당
생성자의 이름은 클래스와 동일
반환 타입이 없다-> 반환 타입이 없으며, 객체의 초기 상태 지정
ex)학생-이름이 무엇인지
몇학번?
나이는 어떻게 되는지?
전공이 어떻개 되는지
https://devkingdom.tistory.com/226
객체생성= 힙
객체 내부= 스택
객체
클래스에서 정의된 설계도를 바탕으로 메모리 상에 생성된 것들을 객체라고 한다
하나를 지칭 할 수 있을때 객체
클래스는 객체인가? 애매, 관점에 따라 다르다
ex) 아래에서 테슬라, 제네시스라는 차는 객체/ 테슬라- 변수 car/제네시스- 변수 car2
클래스 구현시 약속
1.모든 변수는 의미를 생각해서 Class attribute에 표현한다(변수명 길어도 ok)
a.의미 없는 변수명
int d; //경과 시간
int h; //하루게 걸리는 작업 시간
b.의미 있는 변수명
int elapsedDays;
int hoursPerDay;
2. 클래스의, 객체의 이름은 명사 | 메소드 이름은 동사로 사용
보통 객체와 메소드로 코드 의미를 파악하는데 위와 같이 사용하면 코드 읽기 쉬어진다
ex)Page,Ordwe | save,post
Page myPage = new Page()
mypage.save();
Order lastOrder = new Order()
lastOrder.save()
상속: 객체지향 프로그래밍의 핵심
1. 상속이란?
클래스(우리가 부르는 '부모 클래스') --기능--> 다른 클래스('자식 클래스')
자식은 부모클래스 코드를 다 쓸 수있다
자식이 부모클래스를 쓰는것처럼 쓸수 있다 자기 코드 걷어내면
2. 코드 재사용성 항상
중복의 제거, 효율의 증가
-> 반복되는 코드 줄이고 개발 시간 단축& 복잡한 구조를 간단하게 만들 수 있음
3. 확장성과 유연성
변화에 유연하게 대응하기
-> 기존 클래스의 기능 그대로 유지하면서 새로운 기능 추가하거나 변경 할 수 있음
4. 계층적 분류
실제 세계와 비슷한 계층
ex) 부모객체-스마트폰(핸드폰에 관한 모든거)/클래스-아이폰, 갤럭시들
5. 다향성
한 타입, 여러형태
->하나의 타입이 여러 형태를 가질 수 있는 능력 기초
부모 클래스 타입으로 자식 클래스의 객체를 다룰 수 있음
6. 설계 원칙과 상속
개방-폐쇠 원칙의 실현
익스텐즈는 열려있지만. 체인지는 닫혀 있어야
ex)이동 개념 그대로-> 비행하기 ,보행하기 확장은 가능/ 이동 변경은 불가
7. 상속
Extends
java에서 클래스 간의 상속은 extends 키워드로 시작
ex) class 자식클래스명 extends 부모클래스명 ->자식 클래스는 부모 클래스의 모든 기능 물려받음
부모명 여러개 쓸 수없다
8. 상속의 결과
재사용성과 계층적 구조
->자식 클래스는 부모 클래스의 모든 public과 protected 멤버에 접근 가능
9. 생성자와 상속
기본 생성자의 역활
클래스에는 하나 이상의 생성자가 필요->java는 기본 생성자를 자동으로 제공
상속시, 자식 클래스 생성자는 부모 클래스의 기본생성자 자동 호출
파라미터 있는 생성자
파라미터가 있는 생성자를 사용할때는 super키워드를 사용해서 부모 클래스 생성자를 명시적으로 호출
->부모 클래스의 특정 생성자를 선택적으로 사용할 수 있음
git
1.브랜치활용하기
수정은 하고 싶은데 원해 파일은 그대로 두고싶어
복사본 === 브랜치
브랜치 이동 명령어
-git switch 브랜치 이름 (최근데 만듬)
-git checkout 브랜치 이름(예전부터 쓰던거)-다른 기능들도 섞여있긴 한다
브랜치 한번에 생성&이동
-git switch -c (크리에이트) 브랜치 이름
-git checkout -b(브랜치) 브랜치 이름
main에 합치는 이유
(login)이 최신인데
브랜치 합치는 명령어
git switch
git merge 합칠브랜치
rlt qmfoscl- ghkrdls
pull request
사실 git merge 잘 안씀
터미널 말고 github 합치는 이유?
깃허브에서 누가 뭘 수정했는지 리뷰할수 있음
pull 당겨서 합치는 것(merge)
request 요청하다
->머지 해도 될까요?
git push origin 브랜치명
ex) git push origin login
깃허브 코드 반영
git pull origin 브랜치
--
2기능 개발 및 코드 저장 =add commit
--
Main 브랜치 === 배포용(사람들이 실제 쓸 수 있는거)
일반적으로 배포용으로 쓰임
---
문제점1
완벽하게 기능 개발해야 merge 가능
해결책1)개발용 브랜치 하나 더 만든다
문제2) 그냥 합치면 위험함
변수 이름이 똑같으면 에러, 하지만 각각은 에러가 안난다
팀원이깃 풀 하면 다같이 에러
해결책2) 로컬에서 먼저 테스트
실전가이드
참고: 실전 협업 가이드 노선
[1]초기 세팅
1.
a.퐁더생성
초기 코드 작성
git init,add, commit
2.팀장:dev(ghrdms
3.
<팀원은 git init 할 필요 없다>
4.팀원들을 collaborator로 등록
5.팀원: git clone하기
깃 클론하면dev가 기본으로 설정
[2]기능개발
1.기능 브랜치 생성 및 기능개발
2.pull request 생성
충돌 일어나는 경우: 같은줄의 다른 코드
3.코드 작성자: 리뷰 요청
코멘트 요청하면
5.합치기 전 내 로컬에서 충돌 해결 및 테스트
기능 브랜치에서 git pull origin dev
[추가 기능 개발]
origin dev= 깃허브 데브
dev =내 데브
[2]
다음 기능 개발
a기능 브랜치 생성 및 코드 작성
b
c
d
롤백=리셋 한다음에 푸쉬
브렌치는 같은것만 push 가능
'내일배움캠프 7기' 카테고리의 다른 글
자바(예외,오류처리)&새싹반 수업(Enum,컬랙션) (0) | 2024.10.21 |
---|---|
자바(객체지향) (2) | 2024.10.18 |
트러블슈팅(계산기 만들기) (0) | 2024.10.16 |
Spring 7기 11일차(웹) (0) | 2024.10.15 |
Spring 7기 10일(자바, 알고리즘) (0) | 2024.10.14 |