-
자바 웹 개발자 취업을 위한 체크리스트 ( + UML, OOP, 상속, 캡슐화, 다형성 정리)Java Web Programming 2022. 10. 2. 18:45
- 자신만의 개발 공부 블로그 운영
(티스토리 블로그 '그냥해 저스틴')
- 스프링 부트(MVC 패턴) 공부하기
- Gradle로 설정하는거 연습하기
- 리액트(자바스크립트, 노드js) 공부하기
- 다이어그램, 설계도 그리기(UML, Unified Modeling Language)
- 리눅스, 우븐투로 공부하기
- 마리아 DB 공부하기
- 하둡, 몽고DB, nosql 공부하기*
- 알고리즘 이해
- 정보처리기사 자격증 취득
- 데이터 분석 능력 키우기 (통계 용어/개념 익히기)
- C언어 공부하기
- 프로젝트 퀄리티 높이고, ppt로 정리하기
- 깃허브 화면 꾸미기
https://80000coding.oopy.io/865f4b2a-5198-49e8-a173-0f893a4fed45
깃허브 프로필 꾸미기!
깃허브에 들어갈 때마다 허전한 내 프로필..
80000coding.oopy.io
* UML은 모델을 만드는 표준언어이다. 모델이란 실제로 만들면 잘 작동할지를 미리 검증해보는 것이며, 모델을 만드는 것이 실제를 만드는 비용보다 훨씬 적다면, 만들어서 설계를 검사한다. 하지만 적게 들뿐이지 모델을 만드는 것 자체가 비용을 많이 들게 할 수 있기 때문에, 직접 코드를 짜서 시험하는 것보다 UML을 그려서 시험하는 것이 비용이 덜 들 때 주로 사용한다. 그 상황은 크게 3가지로 나뉜다.
- 다른 사람들과의 의사소통 또는 설계 논의
- 전체 시스템의 구조 및 클래스의 의존성 파악
- 유지보수를 위한 설계의 백엔드 문서
* OOP(Object Oriented Programming)은 객체 지향 프로그래밍이며, 세계적으로 많이 쓰는 프로그램 설계 방법론이다. OOP는 '클래스'라는 특징을 부모와 자식 같은 계층으로 서로 상속받는 개념을 가지고 있다. 이 클래스라는 특징을 가지고 실제 존재하는 것이 바로 '객체'이다. 따라서 객체 지향은 '클래스'를 사용해서 추상적인 개념을 정의하고, 이 클래스를 사용해서 실제 사용할 '객체'를 만들어서 '현실 세계의 모든 것을 표현할 수 있다'고 말하는 것이다. 이때 '추상'은 그 존재가 가지고 있는 가장 특징적인 속성을 파악하는 것이다.
* '상속'은 하위 개념 입장에서 상위 개념의 속성을 물려받는 것이며, 상위 개념 입장에서는 자신의 속성이 하위 개념으로 넘어가면서 확장되는 것이므로 java에서는 'extends'라는 예약어를 사용한다. 결국 추상화가 잘된 클래스를 하나 만들어놓고, 비슷한 속성이 필요한 또 다른 클래스를 만들 때 그대로 상속받아서 사용할 수 있다. 'super' 메소드는 부모 클래스의 생성자를 호출하는 기능을 한다. 그리고 자식 클래스에서 부모 클래스로부터 상속 받은 속성을 덮어쓰기 할 수 있는 작업이 'Overriding'이다.
* '캡슐화(Encapsulation)는 어떤 클래스를 사용할 때 내부 동작 원리를 모르더라도, 사용법만 알면 갖다가 쓸 수 있도록 내부를 감추는 것이다. 사용 과정도 간단하게 되지만, 필요 이상의 정보를 보호할 수 있다는 장점도 있다. 'public, private, protected'와 같은 접근제한자를 사용한다. protected는 같은 패키지 안에 있는 클래스가 아니면 모든 접근을 막는다.
* 자바는 컴파일 언어이기 때문에, IDE에서 미리 분석해서 오류가 발생할 코드를 빨간줄로 바로바로 표시해준다.
* '다형성'은 어떤 하나의 변수명이나 함수명이 상황에 따라서 다르게 해석될 수 있는 개념이다. 자바에서 가장 대표적인 다형성 기능이 '추상 클래스(Abstract Class)', '인터페이스(Interface)', '오버로딩(Overloading)이다. 큰 틀에서는 동일하지만, 상황에 따라 각각 다른 세부 특징을 갖는 동작을 하고 싶은 경우에 사용한다.
* 추상 클래스는 클래스의 기능을 그대로 사용하면, 그 기능을 확장하고 싶을 때 사용한다. 그리고 인터페이스는 아무런 기능 없이 껍데기만 구현해놓은 것이다. 따라서 인터페이스에는 자세한 메소드의 구현체가 들어갈 수 없지만, 추상 클래스는 자체적인 메소드의 구현체를 가질 수 있다. 결국 같은 추상 클래스를 상속받은 하위 클래스들은 모두 추상클래스에서 정의된 메소드를 반드시 호출해서 사용할 수 있다. 그리고 각 하위 클래스에서 동일한 메소드를 사용해서, 상황별 서로 다른 동작을 하도록 정의하게 되면 같은 메소드를 호출해도 주어진 인수에 따라 원하는 서로 다른 동작이 실행된다.
* '오버로딩'은 어떤 인자를 받으냐에 따라, 이름만 같은 서로 다른 메소드가 호출되는 기능이다. 예를 들면 인자로 a, b 2가지를 전달하는 경우와 인자로 a, b, c 3가지를 전달하는 경우가 서로 완전히 다른 동작을 취하게 한다는 것이다. 이름만 같고 주어지는 인자의 종류와 갯수에 따라 달라진다. 이게 바로 자바의 다형성의 특징이다.
외부 참조 링크
https://www.nextree.co.kr/p6753/
UML: 클래스 다이어그램과 소스코드 매핑
불과 몇 년 되지 않은 학생 시절... 처음으로 UML을 접했고, UML의 기초적인 그리는 법과 사용법을 배웠습니다. 개인적으로 쉽지 않은 수업이었는데 그 중 가장 많이 사용되는 클래스 다이어그램에
www.nextree.co.kr
https://evan-moon.github.io/2019/08/24/what-is-object-oriented-programming/
알고 보면 재밌는 객체 지향 프로그래밍, OOP 흝어보기
이번 포스팅에서는 , 줄여서 흔히들 OOP라고 부르는 설계 방법론에 대해서 이야기해보려고 한다. OOP는 프로그래밍의 설계 패러다임 중 하나로, 현실 세계를 프로그램 설계에 반영한다는 개념을
evan-moon.github.io
'Java Web Programming' 카테고리의 다른 글
노드js(node.js) 그리고 리액트(React)와 뷰(Vue) (0) 2022.10.03 메이븐과 그래들 (0) 2022.10.02 스프링과 스프링 부트의 차이 ( + JVM, WAS 정리) (0) 2022.10.02