안녕하세요~ 항상 나아가는 개발자 pink_salt 핑솔입니다!
코드프레소 Java 웹 개발 체험단 활동을 하고 있습니다.
Java에 대해서 좀 더 자세히 공부해보겠습니다.
Java의 정말 중요한 개념인 객체지향에 대해서 알아봅시다~ 고고!
이번엔 'Java 프로그래밍 초급' 강의를 듣고 공부한 내용을 정리하여 첫 번째 포스팅을 진행하겠습니다.
SW 개발 방법론
SW는 매우 복잡하고 거대해지고 있습니다.
요구사항대로 동작하는 SW를 정해진 기간/예산 안에 만드는 것이 어렵습니다.
큰 규모의 SW를 잘만들고 관리하기 위해 SW 개발 방법론이 나오게 되었습니다.
- 요구사항 수집
- 요구사항 분석
- 고수준 설계
- 상세 설계
- 구현
- 테스트
의 흐름으로 진행됩니다.
알려진 방법론으로는
- 구조적 방법론
- 정보공학 방법론
- 객체지향 방법론
- 컴포넌트 기반 방법론
- 애자일 방법론
등 이 있습니다.
저희는 객체지향 방법론을 기반으로 공부해보겠습니다.
객체 지향 프로그래밍(Object Oriented Programming)
- 데이터와 데이터에 대한 연산을 수행하는 코드를 그룹화한 객체를 중심으로 SW를 설계 개발하는 패러다임입니다.
- 시스템의 행위보다 시스템에 참여하고 책임을 갖는 객체가 무엇인지에 주목합니다.
- 다수의 객체가 각자의 역할을 하고, 객체 간에는 메시지를 주고 받으며 전체 시스템을 구성합니다.
이러닝 시스템을 설계한다면? (절차지향, 객체지향)
- 절차지향
- 이러닝 시스템은 어떤 동작들을 해야할까?
- 강의를 들을 수 있음
- 질문을 할 수 있음
- 강의 구매를 할 수 있음
- 강의 수강 기능을 하는 함수를 설계하고 구현
- 강의 구매 기능을 하는 함수를 설계하고 구현
- 객체지향
- 이러닝 시스템의 주요 요소들은 무엇일까?
- 강의를 진행하는 강사 객체가 있음
- 강의를 수강하는 수강생 객체가 있음
- 강의와 수강을 관리하는 관리자 객체가 있음
- 강사 객체는 어떤 책임, 어떤 속성을 갖고 어떤 기능을 하는가?
- 수강생 객체는 어떤 책임, 어떤 속성을 갖고 어떤 기능을 하는가?
- 강사 객체와 수강생 객체는 어떤 메시지를 주고 받으며 협력하는가?
객체 지향 프로그래밍의 장점
- 복잡한 SW 시스템이 역할/책임에 따라 모듈화 됩니다.
- SW 구성 요소 간의 명확한 커뮤니케이션이 가능합니다.
- SW를 좀 더 쉽게 유지보수 할 수 있습니다.
추상화와 클래스의 개념
클래스와 객체
- 클래스는 Java 프로그램의 기본 단위입니다.
- Java 프로그램은 1개 이상의 클래스로 구성됩니다.
- 일반적으로 1개의 클래스는 1개의 Java 파일입니다.
- Java는 객체지향 언어입니다.
- 객체는 사물(또는 우리가 상상할 수 있는 개념입니다.
- 객체는 속성과 행동을 갖고 있습니다.
- 클래스로 객체를 생성
- 클래스는 특정 객체를 어떻게 생성할지에 대한 정보를 갖고 있는 설계도입니다.
이 내용은 저번 게시물에서 한 번 짚고 넘어갔습니다.
추상화
'추상적'이라는 말은 상상은 가능하지만 확실한 형상이나 개념은 떠올리기 어려운 것을 말합니다.
'구체적'이라는 것과는 반대로 꼭 필요한 정보 외에는 다른 정보가 누락되어 있습니다.
추상화란?
Abstraction이라고 하며
반드시 필요한 것들을 선택하고 불필요한 것들을 버리는 과정입니다.
추상화의 과정 자체가 하나의 클래스를 설계하는 과정이라고 볼 수 있습니다.
-> 특정 객체에 반드시 필요한 속성과 행위를 정의하는 과정을 말합니다.
좋은 클래스란?
- 꼭 필요한 최소한의 속성과 행위만 존재해야합니다.
- 속성과 행위 모두 특정 객체와 높은 관련성이 있어야합니다.
- 너무 큰 규모의 클래스는 분할될 필요가 있습니다.
Java 클래스 구현과 객체 생성
Java Class
- 객체를 생성하기 위한 설계도 입니다.
- 객체 생성을 위한 정보들을 포함하고 있습니다.
- 객체가 어떤 종류의 행위들을 할 것인지
- 객체가 어떤 종류의 속성을 가질 것인지
Java 클래스 선언 문법
- class 키워드가 사용됩니다.
- 클래스 이름을 선언하고 클래스 내부 구현 코드를 중괄호로 묶습니다.
- 클래스 내부에는 변수들과 메소들이 존재합니다.
- 클래스의 멤버
클래스 관련 용어
- 변수
- 멤버 변수
- 인스턴스 변수
- 메소드
- 메소드
- 인스턴스 메소드
클래스의 이름
- 클래스의 이름은 주로 명사로 작명
- ex) User, Car, Instructor, Student MenuPrompter 등
- 대문자로 시작하며 단어가 연결될 경우 각 단어의 첫 문자를 대문자로 표시합니다.
- ex) CoffeeMaker, DatabaseConnectionManager
- 이름은 생성되는 객체를 가장 잘 표현하는 의미 있는 이름으로 작명해야합니다.
객체의 생성
- 클래스로부터 객체를 생성합니다.
- new 키워드로 객체를 생성할 수 있습니다.
-
클래스명 변수명 = new 클래스명();
-
- 객체를 생성하고 그 객체에 대한 참조 정보를 변수에 저장합니다.
예를들어 NewTubeSystem.java를 만들어보겠습니다.
이 코드는 밑의 그림으로 나타낼 수 있습니다.
null은 참조형 변수가 어떠한 값도 가지지 않을 때를 말합니다.
객체의 멤버 변수 접근
- 점 연산자(dot operator)로 객체의 멤버에 접근 가능합니다.
- 멤버 변수
- 메소드
- 문법
-
객체참조변수명.멤버변수명
-
객체의 멤버 변수의 값을 저장할 수 있습니다.
객체의 멤버 변수에 저장되어 있는 값을 사용하려면 밑에 코드와 같이 사용하면됩니다.
사용자 객체의 생성
steve와 amy라는 사용자 객체를 만들어서 표현할 수 있습니다.
두 개의 객체는 독립적입니다.
클래스를 기반으로 다수의 객체를 만들 수 있고
각 객체별로 여러 멤버 변수를 가질 수 있습니다.
다음 게시물에서는 메소드에 대해 더 자세히 공부하고 정리해서 다시 찾아뵙겠습니다!
열심히 나아가는 개발자 핑솔이었습니다.
go go!
코드프레소 URL: https://www.codepresso.kr/
프리미엄 IT 교육 서비스 - 코드프레소
www.codepresso.kr
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java 프로그래밍 초급(2) - 객체지향 고급(상속) (0) | 2022.01.21 |
---|---|
Java 프로그래밍 초급(2) - 객체지향 메소드 (0) | 2022.01.19 |
Java 프로그래밍 기본 (13) - 반복문 (0) | 2022.01.17 |
Java 프로그래밍 기본 (12) - 배열 (0) | 2022.01.17 |
Java 프로그래밍 기본 (11) - 조건문 (0) | 2022.01.17 |