728x90
Q1. Git이란?
- 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리할 수 있게 해주는 무료 공개소프트웨어.
- Git은 버전 관리 시스템(==형상관리도구) 중 하나로 Git Repository라고 불리는 데이터 저상소에 소스 코드 등을 넣어서 이용
- 개발자간의 협업 및 전체 개발 소스 공유를 위해 프로그램의 버전 관리가 필요 => 이를 관리해주는 것이 GIt
- 깃허브란?
- Git 호스팅 사이트 중 하나
- 내 로컬 저장소와 원격 저장소를 연결하여 파일을 백업하거나 관리
Git의 특징
3.1 Distributed development
- Git repository를 인터넷 상에서 제공하는 서비스(호스팅 서비스) == Github
- 분산형 관리 시스템
- 이러한 변경은 추가개발지점(branch)을 가져와, 로컬 개발 지점과 동일하게 병합(merge)할 수 있다.
- 저장소는 Git protocol 및 HTTP로 쉽고 효율적(특별한 웹서버 구성없이)으로 접근할 수 있다.
3.2 Strong support for non-linear development
- 신속하고 편리한 branch 및 merge 지원
- 비선형(여러갈래) 개발 이력을 시각화 및 탐색 가능한 강력한 도구 제공
3.3 Efficient handling of large projects
- Git은 매우 빠르고, 대형프로젝트나 이력이 많은 작업에 매우 합리적이다.
- Git은 대부분의 다른 버전관리시스템보다 빠르게 요청한다.
- 그리고 일부 작업에서는 더 빠르게 진행한다.
- 또한, 최근의 정상급 오픈소스 버전관리 시스템보다 장기간의 수정내역을 매우 효율적인 압축방법을 사용한다.
3.4 Cryptographic authentication of history
- GIt의 이력은 성공한 개발이력의 commit에 의해 개정명으로 저장된다.
- 일단 그것이 배포되면, 그것을 모르고 예전버전으로 변경하는것은 불가능하다. 또한, 그것들을 암호화 할수 있다.
3.5 Toolkit design
- UNIX의 전통에 따라, GIT은 C로 작성된 많은 소규모 도구모음이다.
- 그리고 많은 스크립트들이 기능 보강을 제공한다.
- Git은 새로운 기발한 작업을 위한 손쉬운 사용과 쉬운 스크립팅을 위한 도구를 제공한다.
Git의 장점
- 소스코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능하다
- Branch를 생성한 뒤, main 프로그램에 merge(병합)
- Git을 통해 버전 관리를 하면 체계적인 개발이 가능
- 프로그램이나 패치를 배포하는 과정도 간단 (pull을 통한 업데이트, patch 파일 배포)
- 분산형 관리 시스템
- 소스 코드를 여러 개발 PC와 저장소에 분산하여 저장한다.
- 중앙 서버 장애가 발생해도 로컬 저장소에 커밋 가능, 또한 이러한 로컬 저장소들을 이용하여 중앙 저장소를 복원 가능.
- 사본을 로컬에서 관리 ⇒ 상대적으로 속도가 빠르다.
참고 url : https://goddaehee.tistory.com/91
Q2. 인터페이스와 추상 클래스란?
추상클래스란?
- 추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스 == 미완성 설계도
- 상속을 위한 클래스이기 때문에 따로 객체를 생성할 수 없음 : class 앞에 "abstract" 예약어를 사용
- 선언부만 작성하는 추상메서드를 선언가능
- 하나의 클래스만 상속 가능
=> 상속을 통해서 하위 클래스에서 추상 메소드를 구현하도록 강제하는 클래스
인터페이스란?
- 기본 설계도라고 할 수 있습니다.
- 다른 클래스를 작성하는데 도움을 주는 목적으로 작성
- 다중상속(구현) 가능
추상클래스 VS 인터페이스 차이점
1. 사용의도 차이점
- 추상클래스 => IS - A "~이다".
- 인터페이스 => HAS - A "~을 할 수 있는".
2. 공통된 기능 사용 여부
모든 클래스가 인터페이스를 사용해서 기본 틀을 구성
=> 공통으로 필요한 기능들도 모든 클래스에서 오버라이딩 하여 재정의 해야하는 번거로움 존재
각각 다른 추상클래스를 상속하는데 공통된 기능이 필요
=> 인터페이스로 작성해서 구현하는게 수월
# 정리
추상클래스 사용 시기
- 같은 조상클래스를 상속하는데 기능까지 완변히 똑같은 기능이 필요한 경우
인터페이스 사용 시기
- 다른 조상클래스를 상속하는데 같은 기능이 필요할 경우 인터페이스 사용
참고 url : https://myjamong.tistory.com/150
Q3. SOLID 원칙이란
Single responsibility principle(단일 책임 원칙)
- 한 클래스는 하나의 책임만 가져야 한다.
- 하나의 역할을 한다.
- 클래스가 변경되어야 하는 이유가 하나만 있어야 함을 의미합니다.
Open/closed principle(개방 폐쇄 원칙)
- 소프트웨어 개체(클래스, 모듈, 함수 등)는 확장을 위해 열려 있어야 하지만 변경을 위해서는 닫혀 있어야 한다.
- 개방폐쇄 원칙 기능은 유지보수를 하는 과정이 쉽게 이루어져야한다.
- 기존의 코드를 변경하지 않고 시스템에 새로운 기능을 추가할 수 있도록 해야 함을 의미합니다.
Liskov substitution principle(리스코프 치환 원칙)
- “프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.” 계약에 의한 설계를 참고하라.
- 원칙은 수퍼클래스의 객체가 하위 클래스의 객체로 대체될 수 있어야 함을 의미합니다. 즉, 하위 클래스는 부모 클래스 대신 사용될 수 있어야 합니다.
- 객체가 상속을 받을 때 하위, 상위 객체가 있다. 상위에서 동작하는 것이 하위에서도 동작 할 수 있게 만든다.
- ex)List<Node> list = new ArrayList<>();
Interface segregation principle(인터페이스 분리 원칙)
- 클라이언트가 사용하지 않는 메서드에 의존하지 않도록 해야 함을 의미합니다.
- 인터페이스가 특정 기능에 집중된 작고 간결한 것이어야 함을 의미합니다.
- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
Dependency inversion principle(의존관계 역전 원칙)
- 프로그래머는 “추상화에 의존해야지, 구체화에 의존하면 안된다.” 의존성 주입은 이 원칙을 따르는 방법 중 하나다.
728x90
'🦁 걸어봐 위엄 라잌어 라이옹 > ✍🏻 그룹스터디' 카테고리의 다른 글
[대학교멋사🦁/스터디] #1 Collection과 Class (0) | 2023.04.09 |
---|