티스토리 뷰
객체 지향 프로그래밍
Bus b= new Bus(); --> Bus 인스턴스를 Heap 메모리에 올라간다
Bus : 레퍼런스 타입
b : 참조변수 레퍼런스
Bus() : 생성자
객체지향 : 메모리에 올라가 있는 인스턴스를 객체라고 한다. 어떤 객체는 1개만 필요한 것도 있고, 여러개가 필요할 수 있다.
- 초보자 : 객체가 아니라 클래스에 대해 집중한다.
라이브러리 vs 프레임워크
차이 : 사용 주체가 누구인가?
1. 라이브러리 : 내가 다른 사람이 작성한 클래스를 사용.
2. 프레임워크 : 내가 만든 코드를 다른 주체가 사용하는 것.
- Spring Framework : 스프링이 나의 코드를 사용해서 어플리케이션을 구동한다.
디자인 패턴
- 객체 생성, 구조, 행위에 대한 내용을 정리한 것
- UML : 클래스와 클래스간의 관계를 표현하는데 사용되는 언어
- 세상에 존재하지는 않지만 단어는 존재하는 것이 있다.
- 추상클래스 : 존재하지 않는 객체이지만 존재하는 클래스.
- italic 체 : 추상 클래스
객체의 응집도
- 이름이 중요하다. --> 직관이 생각난다
- 구린 향기 : 클래스 이름과 메서드 이름이 잘못되었을 때
- 응집도가 높을 수록 좋은 객체이다.
- 개발 = 기능 + 리팩토링
- 리팩토링은 바로 해야한다. --> 구린 향기가 나오면 바로 제거해야 한다.
오버라이딩
- 부모의 메서드를 사용하여 재정의 하는 것
- 부모의 메서드를 변경하는 것이 아니다.
*오버라이딩과 스포츠카의 예시
Car c = new SportCar();
- "저 스포츠카는 자동차이다" 라는 뜻이다.(SportCar가 Car를 상속받는다고 가정)
c.drive() : 이건 스포츠가가 달리고 있는 것이다. 즉 스포츠 카의 메서드가 실행된다.
* 메서드가 오버라이딩 되면 무조건 자식것이 실행된다.
* 필드 변수는 오버라이딩 되지 않는다.
* 조상 타입으로는 후손 타입의 객체를 가리킬 수 있다
ex) 저 스포츠카는 자동차이다 Car c = new SportCar();
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | package overriding; public class Test01 { public static void main(String[] args) { //Bus 타입의 인스턴스 객체를 버스라고 취급하여 사용한다. //이 때는 버스의 모든 기능을 사용할 수 있다. Bus b= new Bus(); b.a(); b.run(); //Bus 타입의 인스턴스 객체를 자동차로 취급하여 사용한다. //이 때는 자동차로서의 메서드만 사용할 수 있다. Bus 고유의 메서드 사용 불가 Car c= new Bus(); c.run(); Object obj = new Bus(); /* * 메서드가 오버라이딩 되면 자식 메서드가 실행된다. * 필드 변수는 오버라이딩이 되지 않는다 * */ } } abstract class Car{ public void run(){ System.out.println("run"); } } class Bus extends Car{ public void a(){ System.out.println("a"); } } | cs |
Software Development Life Cycle
- 프로그래밍 : 요구사항을 구조에 맞게 구현하는 것
- 요구사항
1) 기능적 요구사항 : 장바구니 담기, 상품 조회 등
2) 비기능적 요구사항 : 품질, 성능 관련된 것. 확장성, 보안
- 비기능적 요구사항을 만족하기 위해서 아키텍쳐가 달라진다
인터페이스는 왜 만들어야 하는가?
- 자바 책 : 인터페이스가 있고 그것을 구현하는 것이 여러개가 있어서
- 하지만! 인터페이스를 구현하고 있는 클래스는 1개일 경우가 더 많다
- 인터페이스는 무슨 기능을 구현할지에 대해 선언하는 것에 필요하다. 프로그램을 짤 때는 선언부터 해야 한다. 인터페이스는 어떤 기능을 만들어야 겠다는 선언을 하는 것.
- 설계 : 앞으로 어떤 것을 개발할지에 대한 스케치.
- 테스트 할 때 편하다.
-
'Back-end' 카테고리의 다른 글
[Spring Boot] 스프링 Bean 컨테이너의 역할 (2) | 2018.10.06 |
---|---|
[Spring Boot] 스프링부트 개발 준비 (0) | 2018.10.06 |
[Spring Boot] Java, Spring 학습 로드맵 (0) | 2018.10.06 |
[Docker] Docker ubuntu 한글버전 생성 및 자바 설치 (0) | 2018.10.03 |
[Docker] Docker container를 실행하기 위한 환경설정 (0) | 2018.10.03 |
- Total
- Today
- Yesterday
- 열반스쿨기초반
- 월부닷컴
- 개발자 회고
- push_back
- resize
- pop_back
- ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
- Use case
- 내년은 빡세게!!
- 부동산공부
- 항해솔직후기
- 깃
- 항해플러스백엔드
- front
- 월급쟁이부자들
- 재테크공부
- 인셉션
- 관계대수
- 2023년
- github
- 깃허브
- docker
- Spring boot
- GIT
- 항해플러스후기
- 유즈케이스
- 폭포수
- Inception
- 파라메터
- 도커
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |