분류 전체보기 183

자바 상속 기초 4) 메소드 overloading - 공부하는 도비

클래스의 메소드를 선언할 때, 같은 메소드지만 다른 매개 변수를 가지게 하는 것을 메소드 overloading이라고 합니다. 바로 예제 코드를 보겠습니다. package Inferitance; class Print { int a, b; int c = 0; public void Setnumber(int a, int b) { this.a = a; this.b = b; } public void Setnumber(int a, int b, int c) { this.Setnumber(a, b); this.c = c; } public void Sum() { System.out.println(a + b + c); } public void Mul() { if (c == 0) { System.out.println(a * ..

JAVA 2022.04.02

자바 상속 기초 3) 메소드 overriding - 공부하는 도비

자바의 상속을 통해서 상위 클래스의 기능을 하위 클래스로 물려줄 수 있었습니다. 하지만, 상속을 하게 되면 하위 클래스는 상위 클래스의 메소드 변경 없이 단순 기능 추가만 할 수 있습니다. 만약 그래야 한다면 제약이 상당할 것입니다. 이런 제약을 벗어나기 위해서 하위 클래스가 부모 클래스의 기본적인 동작을 변경할 수 있어야 하는데 이런 맥락에서 도입된 기능이 메소드 오버 라이딩(overriding)입니다. 메소드 오버 라이딩은 재정의, 새롭게 정의한다는 뜻을 가지고 있습니다. 즉, 부모 클래스에 선언한 메소드를 자식 클래스에서 동일한 메소드명으로 재 정의 해주면, main에서 이 메소드를 호출했을 때, 부모 클래스가 아닌 자식 클래스에 있는 메소드를 호출하게 끔하는 것입니다. package Inferit..

JAVA 2022.04.02

자바 상속 기초 2) super - 공부하는 도비

지난 피드에서 상속이 무엇인지, 왜 필요한지에 대해 설명했습니다. 2022.04.02 - [자바] - [자바] 상속 기초 1) - 공부하는 도비 [자바] 상속 기초 1) - 공부하는 도비 오늘은 상속 기본 개념을 알아보겠습니다. 우리가 어떤 프로그램 소스 파일을 가졌고, 그 소스 코드의 기본 동작에다가 추가하고 싶은 기능이 있다고 가정해볼게요. 가장 쉬운 방법은 소스 코드 yang-wistory1009.tistory.com 자바는 생성자라는 초기화 작업을 가능케 하는 특수한 메소드가 있는데, 상속을 하다 보니 부모 생성자와 자식 생성자 부분에서 문제가 생긴다는 걸 발견했습니다. 우선, 무슨 문제가 발생하는 지 코드를 통해서 알아보겠습니다. 위의 코드를 실행 시키면, 아래와 같은 오류가 발생합니다. 부모 ..

JAVA 2022.04.02

자바 상속 기초 1) - 공부하는 도비

오늘은 상속 기본 개념을 알아보겠습니다. 우리가 어떤 프로그램 소스 파일을 가졌고, 그 소스 코드의 기본 동작에다가 추가하고 싶은 기능이 있다고 가정해볼게요. 가장 쉬운 방법은 소스 코드 자체를 수정하는 방법입니다. 하지만, 코드의 수정이 불가능한 경우가 있고. 만약 추가적인 기능을 넣어서 코드를 새로 짜더라도, 다른 사람은 그 기능이 필요 없다고 생각되어 빼버릴 수 도 있습니다. 이때 추가했던 기능의 매개변수라던지 클래스 등이 여전히 남아 있어 오류를 발생시킬 가능성이 커지게 됩니다. 이런 코드의 오류를 줄이기 위해서 나온 개념이 "상속"입니다. 기존의 객체를 그대로 유지하면서 어떤 기능을 추가하는 방법을 구상하다가 나온 개념이 상속입니다. 즉, 기존의 객체를 수정하지 않으면서 새로운 객체가 기존의 객..

JAVA 2022.04.02

uuid를 활용한 해시 함수의 seed 사용 - 공부하는 도비

uuid 모듈이란? 네트워크 상에서 중복되지 않는 고유한 식별자인 UUID(Universally Unique Identifier)를 생성하기 위해 사용되는 모듈입니다. UUID는 기본적으로 16바이트(128비트)의 숫자이고, 이 숫자는 32개의 16진수로 구성되며, 5개의 그룹으로 표시되고 각 그룹은 하이픈(-)으로 구분됩니다. 파이썬에선, 별 다른 설치 없이 uuid 모듈을 import 한 뒤 uuid.uuid4()를 출력하면, UUID를 얻을 수 있습니다. 이렇게 생성한 UUID를 해시 함수의 seed 로서 사용해보겠습니다. (여기선, seed를 단순히 해시 함수의 입력 값으로 봐도 무관합니다.!) import uuid import hashlib def HashFunction(text): hex_ha..

Python 2022.03.05

hashlib을 이용한 binary hash value 생성 - 공부하는 도비

HASH 함수란? 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수입니다. 함수의 입력 값의 길이가 어떠하든, 결과 값의 길이는 항상 동일하다는 것이 해시함수의 특징입니다. 또한, 동일한 데이터를 입력 값으로 사용할 경우, 결과는 시간이 지나도 같게 나오게 됩니다. 해시 함수의 종류에는, MD5, SHA(SHA-1, SHA-256, SHA-512, SHA-3) 등이 있습니다. 아래 링크는 SHA256을 통해서 해시값을 만들어 볼 수 있는 사이트입니다. https://www.convertstring.com/ko/Hash/SHA256 SHA256 해시 - 온라인 SHA256 해시 생성기 www.convertstring.com 보통 해시 값이라는 건 16진수로 결과가 나오게 되는데, 오늘 제가 알아..

Python 2022.03.05

자바 생성자(constructor)와 초기화 - 공부하는 도비

객체 지향 프로그래밍도 초기화에 해당하는 기능이 제공되는 데 이것을 "생성자(constructor)"라고 합니다. 생성자를 쓰고, 쓰지 않고를 코드로 비교해보겠습니다. 형광색으로 표시된 곳이 두 코드의 차이점을 나타냅니다. 생성자를 사용하지 않을 때는, 직접 setNumbers라는 메소드에 매개변수로 값을 전달해야 했지만, 생성자를 사용했을 때는 Calculator class 의 객체 c1(c2)를 생성하면서 값을 초기화해주는 걸 볼 수 있습니다. 조금 더 자세히 살펴보면, Calculator_1 과 동일한 이름을 가진 메소드 명을 지정하면 그게 생성자가 됩니다. 생성자 메소드는 어떤 메소드 보다 제일 먼저 실행되기 때문에, 초기화 작업이 가능하게 되는 것입니다.

JAVA 2022.03.04

자바 객체 지향 기본 동작 원리 (클래스, 인스턴스, 객체) - 공부하는 도비

자바는 객체지향 언어로 알려져 있습니다. 객체지향 기능을 사용하지 않고도 프로그램을 작성할 수 있지만, 가독성 좋고 실용적인 코드는 작성할 수 없습니다. 오늘 피드에서는 왜 객체지향이라는 게 필요한지와 그와 관련된 용어 정리를 해보겠습니다. 이전 피드에서는 메소드의 중요성과 필요성에 대해서 설명했습니다. 메소드에 대해 궁금하신 분들은 아래 링크를 따라가 주세요~! 2022.03.03 - [자바] - [자바] 메소드(method) - 공부하는 도비 [자바] 메소드(method) - 공부하는 도비 프로그램을 작성하다 보면 특정 연산을 중복해서 여러 번 사용할 때도 있습니다. 예를 들어, '+, -, *, /' 연산을 해주는 코드가 3번 필요하다면, 아래 코드처럼 비 효율적인 방법으로 실행해야 합 yang-w..

JAVA 2022.03.04

자바 Scanner 사용 - 공부하는 도비

자바는 프로그램 실행 중에 사용자가 데이터를 직접 입력하여, 프로그램에 사용할 수 있도록 하는 Scanner class가 있습니다. 영어 뜻 그대로 프로그램에 값이 입력이 되면, 그 값을 스캔하는 기능을 가지고 있습니다. * 사용법 1. Scanner 호출 import java.util.Scanner; Scanner를 사용하기 위해서 java.util 패키지 안에 있는 Scanner를 호출합니다. 2. Scanner 객체 생성 Scanner sc = new Scanner(System.in); 위의 코드를 해석하면, - System.in은 사용자가 입력한 값이고, - Scanner는 System.in에서 입력된 값을 스캔하고, - sc라는 객체를 생성하여, 스캔한 값을 sc 객체에 넣는다라는 뜻입니다. 3..

JAVA 2022.03.03