728x90

Programming 33

13. 예외처리

초보개발자 주씨는 현업 개발자로 취업한 후 방구석에서 혼자 노트북으로 다루던것과 차원이 다른 무거운 프로젝트를 보고 놀라움과 두려움을 느꼈다... 그래 바로 내이야기다.. 내가 다니고 있는 회사에선 다양한 툴과 언어를 사용한다. 하지만 모든 언어에서 중요하게 여겨지고 시스템 실행의 완성도를 높이는 필수적인 작업은 예외처리 작업이다. (Error Handling 이라고 볼 수 있다.) 강의에서 나오는 예시를 들어서 설명을 해보자 예외처리의 필요성 두가지 숫자를 넣으면 곱하기 빼기 더하기 나누기의 사칙연산을 모두 수행해주는 프로그램이 있다. 이때 입력값이 10과 0이라면 10/0에 의해 오류가 발생하고 프로그램의 동작이 멈출것이다. 그런데 우리는 나누기 오류 하나때문에 나머지 세가지값을 잃어야할까? 그건 너..

Programming/Java 2021.01.13

12. API

ㅇJAVA 필수 API API란 무엇? java에는 개발자들이 편리하게 쓸수 있는 클래스들이 아~~~주 많다. 이러한 기본적으로 제공되는 클래스들로 개발자들은 그냥 편하게 다양한 기능을 사용할 수 있다. 이러한 기능들을 정의해둔 클래스들을 API(Application Programming Interface)라고 한다. 즉 '누군가가 만들어놓은 기능'들을 API라 할 수 있다. API의 종류는 너~~~무나도 많지만 여기선 많이 사용하는 API만 몇가지 알아보도록 하자. String의 이해 그동안 많이 사용했던 String API를 알아보자! String string = "Hello World!" String은 대문자로 시작하기 때문에 기초데이터가 아닌 객체데이터이다. 하지만 뒤에 new 생성자 없이 기초데..

Programming/Java 2021.01.11

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
728x90