728x90

Programming/Java 21

11. 패턴을 통한 객체지향 언어의 이해

패턴이란? 패턴(디자인패턴)은 객체지향 언어를 배우는데 중요한 방법이다! 어떻게하면 빠르게 개발하고 효율적으로 유지 보수 할 수 있을까? 이러한 고민을 하던 중 객체지향의 상속, 인터페이스, 추상화등의 기능으로 시간과 인력투입의 효율을 극대화시키기 위한 방법이 정립되기 시작했다. 그리오 이러한 방식을 어떠한 틀로 정해 놓은 것이 바로 '디자인 패턴'이다. 쉽게 정리하면 객체지향의 장점만을 모아 효율적이고 빠르게 개발할 수 있도록 만들어놓은 틀이 패턴이라고 할 수 있다. 다양한 패턴을 습득하고 나면 왜 상속, 추상화등이 필요한지 이해할 수 있게될 것이다. 패턴은 아주 다양한 종류가 있다. 디자인 패턴 관련 학습은 꾸준히 하는것이 좋다. 간단한 패턴 몇가지를 살펴보도록 하자. 어떤 클래스는 오로지 하나의 객..

Programming/Java 2021.01.10

10. 인터페이스

인터페이스란? 1) 인터페이스는 객체와 객체의 소통수단이다. 하나의 클래스에서 객체를 여러개 만들 수 있다. 인터페이스는 그 객체 사이간의 소통수단이다. 2) 함께 일을 한다면 '~을 해라!'를 정해주는 작업명세서로도 볼 수 있다. 3) 다형성 : Java에서 다형성을 가능하게 한다. 다양한 형태의 type을 취할 수 있게한다. (상속받은 클래스 객체 생성시 부모클래스, 자식클래스 두가지의 타입이 가능했던것처럼!) 4) 디자인 패턴과 프레임 웍을 통해 습득하는 것이 최선! 5) 객체를 부속품화 - 다양한 객체를 제품의 부속품처럼 개발자 마음대로 변경할 수 있다. 인터페이스 문법 1) 실제 기능은 없다 - 구현된 기능이 없다. 추상메소드와 상수만이 존재한다. (클래스가 아님!) 2) Private는 안된다..

Programming/Java 2021.01.07

9. 추상클래스

추상클래스란? - 추상적으로 정의할테니 사용자가 꼭 재정의(overriding) 해! 지난번 예제를 생각해보자. 이번엔 본사가 메뉴만 정해주고, 매장마다 주위 환경에 맞게 가격을 책정한다고 하자. 지난 예제처럼 주택, 대학가, 증권가는 본사 class를 상속받을것이다. 그런데 이전처럼 본사만 믿고 오버라이딩 하지 않는다면 어떤 가격이 0원으로 출력될것이다! 따라서 매장에 본사가 가격측정을 강요할 필요가 있다 부모클래스가 자식클래스에게 메소드를 강제로 재정의하게 하는 방법으로 만들어진 클래스가 '추상클래스'이다. 코드로 된 예시를 보자. package com.javale.chain2; public abstract class HeadQuaterStore { public static void main(Stri..

Programming/Java 2021.01.07

7. Static

Static의 이해 필요에 의해 class를 만들고, 생성자를 통해 객체로 만들어서 사용을 했다. 이러한 방식으로 모든걸 처리하면 다음과 같은 문제가 생긴다. 예시를 살펴보자. 아빠 지갑(class)에 200원이 있다. 아이들이 100원을 달라고 할때 100원의 아빠지갑 객체가 형성된다고 하자. 세명의 아이들이 100원을 받는다면 3개의 객체가 생긴다. 프로그래밍의 입장에선 클래스에선 무한한 객체 생성이 가능하고, 각 객체는 독립적이므로 실행이 가능한 경우가 된다. 하지만 현실세계에선 200원밖에 없는데 300원을 준것이므로 불가능한 경우이다. 이를 해결하는 방법은 아빠 지갑 객체가 세 아이들 모두에게 '공유'되면 된다 그렇다면 세번째로 돈을 받아간 아니는 100원을 받지 않고, 오류없이 동작한다. 이를..

Programming/Java 2021.01.03

6. 패키지 및 접근제한

패키지의 이해 패키지란? 자바에는 수많은 .java파일(class)이 존재한다. 이러한 많은 파일의 효율적 관리를 위해 자바는 패키지라는 구조를 사용한다. 즉, 패키지란 수많은 관련 class들을 그룹지어 관리하는 폴더라고 볼 수 있다. 패키지 설계 상식 패키지 이름을 정할 때, 이름은 유일한 이름일수록 좋다. 다른 패키지와 겹치면 안좋기 때문이다. 우리 회사에서 만든 소스를 다른곳으로 이식하려 할 때 이름이 중복되면 좋지 않기 때문이다. Import의 이해 다른 패키지의 클래스를 가져올땐 import를 사용한다. 서로 다른 클래스를 사용하려 할때는 반드시 import해줘야한다. 이클립스는 자동으로 import해주기 때문에 번거로울것은 없다. //예시 //import로 클래스 가져오기 import com..

Programming/Java 2021.01.03

5. 객체지향 프로그래밍

클래스 제작 클래스를 직접 만들어보자 package Manpackage; public class ManClass { //instance 변수, private 선언을 해주었기에 다른 class에서 변수에 접근 및 사용이 불가능 //정보보호를 위한 '은닉화' private int age; private int height; private int weight; private String phoneNum; public static void main(String[] args) { // TODO Auto-generated method stub } //생성자 public ManClass() { } //parameter를 포함한 생성자 public ManClass(int age, int height, int weigh..

Programming/Java 2021.01.03

4. 객체지향 프로그래밍

객체지향 이전의 프로그래밍 절차지향 프로그래밍 절차지향 프로그래밍은 코딩한대로 위에서 아래로 순차적으로 쭉 실행된다. 절차지향의 단점 - 비효율적인 부분이 존재한다. 1) 값이 변경되는 경우엔 동일한 작업이지만 매번 소스코드를 수정해야한다. 2) 기존의 로직을 다시 사용할때 다시 코딩하거나 기존코드를 카피해 재사용하는 방식이나 모두 비효율적이다. 3) 2)의 방법은 동일한 로직의 코드가 반복되어 코드의 양이 길어지고 유지보수가 어려워진다. 메소드의 이해 이를 위해 등장한 방식이 함수 or 메소드이다. 로직만 만들어놓고, 사용할 때 소스(데이터)를 주면 메소드가 알아서 결과값을 반환하는 방식이다. 예시를 통해 메소드에 대해 이해해보자. /*자바의 메소드는 접근제한자 - 반환type - 메소드명(input ..

Programming/Java 2021.01.03

3. 배열

배열이란? 여러개의 변수(데이터)를 모아놓은 요술주머니라 생각하면 된다. #이 강의에서는 할당되는걸 요술주머니에 집어넣는거라 표현하신다.. 6년점 컴프수업 갬성마냥..ㅎ 배열문법 1. 배열선언 변수선언과 비슷함. 여러개의 데이터가 모여있어서 중괄호{} 사용. 배열의 크기는 최초에 한번 설정되면 변경이 불가함 //배열선언 예시 //1 int[] iArr = {10,20,30,40} //2 int[] iArr = new int[5] //배열의 크기만 정하고 이후에 할당 int[0] = 10; int[1] = 20; int[2] = 30; int[3] = 40; int[4] = 50; 2. 메모리구조 배열 안 각 데이터의 주소값을 배열 안에 저장함. 3. 레퍼런스의 이해 위에 주소값등르 '레퍼런스'라고 한다...

Programming/Java 2020.12.30

2. 변수와 연산자

(기초적인 내용은 생략된 부분이 많습니다.) 1. 기본자료형 vs 객체자료형 기본자료형(Primitive) - java언어에 이미 존재하는 데이터타입. ex) int, double, boolean, char 등등 - 메모리에 직접 할당 객체자료형(Object) - 여러가지 데이터들이 모여 있는 복잡한 데이터로 기본 자료형에 비해 크기가 크다. ex)String, System, ArrayList 등 - 메모리 어딘가에 저장 후 그 주소값을 할당 2. 형변환 묵시적 형변환 작은 데이터를 큰 데이터로 변환 int a = 10 double b = a 위의 경우 b 출력시 10.0으로 출력됨. int(4byte) a 가 double (8byte)로 형변환됨 반대의 경우를 큰데이터 -> 작은데이터 인 경우 명시적 ..

Programming/Java 2020.12.30
728x90