SW 개발 방법론 : 요구사항 수집 - 요구사항 분석 - 고 수준 설계 - 상세 설계 - 구현 - 테스트
구조적 방법론, 정보공학 방법론, 객체지향 방법론, 컴포넌트 기반 방법론, 애자일 방법론
각 방법론을 통해 효율적으로 소프트웨어를 개발 할 수 있음.
객체 지향 프로그래밍(Object Oriented Programming)
코드를 그룹화 된 책임을 가진 객체를 중심으로 SW 설계/개발 패러다임이다.
다수의 객체가 각자 역할을 수행하고, 객체 간에 데이터를 주고 받으면서 전체 시스템을 구성한다.
절차 지향 | - 시스템의 행위에 집중한다. ( 동작하는 함수 설계/구현) |
객체 지향 | - 시스템에 참여하는 요소(객체)들에 집중한다. ( 객체의 속성과 기능 그리고 객체 사이 연결 ) |
객체 지향 프로그래밍이 가지는 장점
- 복잡한 SW 시스템이 역할/책임에 따라 모듈화 가능하다.
- SW 구성 요소 간 명확한 커뮤니케이션이 가능하다.
- 결과적으로 SW의 유지보수가 용이해진다.
클래스와 객체
객체 : 속성(데이터)과 행동(메소드)을 가지고 있는 사물
클래스 : 객체를 생성 할 수 있는 설계도
클래스는 어떻게 만들어지는가?
구체적(Concrete) : 하나의 객체에 대해서 구체적으로 표현하는 것.
추상적(Abstraction) : 구체적으로 많은 정보들을 필요한 부분만 추출해 추상적으로 표현하는 것.
추상화 : 특정 객체에 반드시 필요한 속성과 행위를 정의하는 과정 => "클래스의 설계과정"
- 좋은 클래스는 꼭 필요한 최소한의 속성/행위만 존재한다.
- 속성과 행위 모두 특정 객체와 높은 관련성이 있어야 한다.
- 큰 규모의 클래스는 역할에 대해서 분할 할 필요가 있다.
Java 클래스 선언 & 객체 생성
클래스 선언 예시
- 클래스 이름은 주로 명사로 작명 - User, Car..
- 대문자로 시작하여, 단어가 연결될 경우 각 단어 첫 문자를 대문자로 - CoffeeMaker ..
- 클래스 이름은 객체를 잘 표현하는 의미있는 이름으로 작명
[접근제어] class 클래스이름 {
타입 변수이름;
타입 변수이름2;
리턴타입 메소드이름1(인자){
..
};
리턴타입 메소드이름2 (인자){
};
클래스 용어
변수 | 멤버 변수 / 인스턴스 변수 |
메소드 | 메소드 / 인스턴스 메소드 |
객체 생성
객체는 클래스로부터 변수와 메소드를 가진 객체로서 생성되게 된다.
클래스명 객체명 = new 클래스명() |
public class NewTubeSystem {
public static void main(String[] args) {
User steve = new User();
}
}
객체의 멤버 변수 접근
객체명 . (멤버 변수 or 메소드) |
점 연산자 ( dot operator )로 객체의 멤버에 접근 가능
- 멤버 변수, 메소드 등
예제
steve.email = "dudrn1947@gmail.com"
steve.password = "zxc123"
steve.nickname = "jobs"
steve.age = 22;
System.out.println("user info" +
"\n email" + steve.email +
"\n age" + steve.age);
- 하나의 클래스로 여러 개의 객체를 생성할 수 있고, 각 객체는 독립적으로 참조되어 저장/관리된다.
- 클래스느 객체 생성을 위한 설계도로, 속성과 행위에 대한 정보 포함
- 클래스의 선언은 class 키워드로 하여 멤버 변수와 메소드를 포함한다.
- new 키워드로 객체를 생성하여 참조 정보를 변수에 저장한다.
- 점 연산자를 사용하여 객체의 멤버에 접근 가능하다.
함수와 메소드
메소드(Method)
- 객체는 속성과 행위를 가지는 데, 메소드는 객체의 행위를 정의하고 I/O가 존재한다.
- 메소드는 특정 객체에 포함되고, 독립적으로 존재하지는 않는다(종속적).
- 이름은 행동을 표현하기 위해 주로 동사로 시작하고 의미있도록 작명한다.
- 데이터를 전달하지 않아도 연산과 출력이 가능하다.
- 첫 단어는 소문자로 , 2개 이상의 단어 연결 시 첫문자를 대문자로 표시한다
- getUserInfo() , signUp() ...
함수(funtion/procedure/sub-rutin)
- 특정 작업을 수행하기 위한 코드들의 집합으로 구분해 코드 중복을 줄임.
- 특정 작업의 코드들을 모듈화하여 필요한 경우 호출
함수 | 메소드 |
- 함수는 독립적으로 존재 - 함수는 특정 작업에 필요한 데이터를 모두 제공 |
- 메소드는 특정 객체 내부에서 존재 - 객체의 멤버 변수에 대한 연산이 가능 - input은 1개 이상의 파라미터 리스트 - output은 없거나 리턴 값으로 표시 |
[접근 제어] [리턴] [메소드이름](파라미터 .. ){ 구현 코드 + 리턴 } |
접근제어자
캡슐화
- 객체의 속성과 행동을 하나의 단위로 그룹화하는 것
- 객체의 속성과 행동을 은닉(Information Hiding)
- 은닉이란 반드시 필요한 정보만 제공하고, 외부에서의 접근을 막고 오류를 방지
- 반드시 필요한 멤버만 외부에 노출하여 결합도를 줄일 수 있음.
- 객체 간의 관게의 양을 조정하여 좋은 설계를 만들 수 있다.
- 접근 제어자를 default로 두지 말고 반드시 적절하게 명시해야 함.
- 정보은닉이 되지 않으면 외부에 노출되는 객체의 정보가 많아짐 |
-정보 은닉을 통해서 외부와 접근되는 변수/함수를 최소화하고 , 접근되는 원소들을 통해서 내부에서 작업을 진행한다. |
캡슐화를 가능하게 해주는 것은 자바에서 " 접근 제어자 " 를 통해 가능하게 할 수 있다.
- 접근제어자는 클래스 키워드 앞에 명시한다.
- 멤버 변수에서는 자료형 앞에 명시한다
- 메소드는 리턴 타입 앞에 명시한다.
JAVA의 접근제어자
- private 접근 제어자로 설정된 변수는 클래스 내 메소드를 통해 변수를 다룰 수 있다.
- (예) 생성자를 통한 초기화 , getter/setter로 변수에 접근
- 대부분의 변수는 private로 지정하는 것이 이상적이다.
- 코드프레소 Java 웹 개발 체험단 활동 중
- 코드프레소 웹개발 트랙의 " " 내용입니다.
- 코드프레소 URL: https://www.codepresso.kr/
반응형
'EXTERNAL ACTIVITY > Code Presso -웹개발 트랙 체험단-' 카테고리의 다른 글
- (0) | 2022.01.19 |
---|---|
<코드 프레소 웹개발 트랙> Java 프로그래밍 초급 [2] (0) | 2022.01.18 |
<코드 프레소 웹 개발 트랙> 실무자가 알려주는 Git 활용한 프로젝트 관리[2] (0) | 2022.01.15 |
<코드 프레소 웹 개발 트랙> 실무자가 알려주는 Git 활용한 프로젝트 관리 (0) | 2022.01.14 |
<코드 프레소 웹 개발 트랙> 처음 시작하는 자바 프로그래밍[4] (0) | 2022.01.13 |