728x90

 

실행클래스 & 기능 클래스

실행 클래스 : 메인메소드. 전원 on/off 버튼 역할

기능 클래스 : 불러와지는 클래스. 실제 내용이 담긴 클래스

 

실행클래스

Run이라 지어진 이 클래스는 해당 기능을 가진 메소드를 실행하기만 실행 클래스이다

메인메소드가 들어가서 실행할 수 있게 해준다

 

 

 

기능 클래스

실제 기능을 담고 있는 클래스. 해당 클래스에서는 실행하는 기능은 없다.

객체지향 5대 원칙 SOLID 중 SRP인 클래스에 하나 기능 원칙도 추가도 잊지말자

 

 

 

728x90
반응형
728x90

JAVA method - 6. 메소드의 활용

 

메소드 사용의 장점

1.코드의 가독성↑

 - 1억줄의 코드에서 수많은 로직이 얽힌 코드를 이해해야할 때...?

2.재사용 용이 : 호출만 하면 됨

3.유지보수 관리 용이

 

public class method06 {
	public static void main(String[] args) {
	
			double valueOfSupply = 10000.0;
			double vatRate = 0.1;
			double vat = valueOfSupply * vatRate;
			double total = valueOfSupply * vat;

			System.out.println("Value of supply : " + valueOfSupply);
			System.out.println("VAT : " + vat);
			System.out.println("Total : " + total);
	}
}

메소드를 사용해 위의 코드를 아래의 코드처럼 간결하고 유지보지가 용이하게 바꿔보자

public class method06 {
	public static double valueOfSupply = 10000.0; // 공급가액
	public static double vatRate = 0.1;           // 부가가치 세율
	// public static이라 붙이는 의미 : 위의 method06 클래스의 직접적인 소속이라는 것

	public static double getVAT() {
		return valueOfSupply * vatRate;
	}
	public static double getTotal() {
		return valueOfSupply + getVAT();
	}
	
	public static void main(String[] args) {
	
		
	// 지역변수
//	double vat = valueOfSupply * vatRate;  // 부가세
	double vat = getVAT(); // 위와 같은 코드. get메소드 get변수명의 변수값을 가져온다
//	double total = valueOfSupply + vat;    // 합계
	double total = getTotal();
	
	
	System.out.println("Value of supply : " + valueOfSupply);
	System.out.println("VAT : " + vat);
	System.out.println("Total : " + total);

	// 메소드 사용의 장점
	// 1.코드의 가독성↑
	// 2.재사용 용이 : 호출만 하면 됨
	// 3.유지보수 관리 용이
	}
}

반복되는 코드들을 메소드화해서 메인메서드 밖에서 만들고, 지역변수를 전역변수화해서 이 클래스 안 전체에서 사용 가능케 전환

 

  • public static 붙이는 의미 : 위의 method06 클래스의 직접적인 소속이라는 것
  • get메소드 : get변수명의 변수값을 가져온다

 

 

 


 

 

JAVA method - 7. 수업을 마치며

메소드는 서로 연관된 명령을 그루핑해서 이름을 붙인 것

클래스는 서로 연관된 메소드와 변수를 그루핑해서 이름을 붙인 것

 

클래스(class)

많은 컴퓨터 언어들이 클래스의 개념을 갖고있지 않거나 처음에는 없다가 나중에 추가된 경우가 많다

메소드만으로도 할 수 있는 것이 많고, 충분히 혁명적

 

객체지향 프로그래밍(Object Oriented Programming, OOP)

서로 연관된 메소드와 변수를 그루핑해서 이름을 붙인 것이 클래스

이 클래스를 복제해서 서로 다른 내부상태를 가지고 있는 복제본들을 인스턴스

 

class & instance & object

클래스와 인스턴스를 우선 객체라고 생각해도 좋다

객체를 뼈대로 하는 프로그램을 만들어가는 프로그래밍 방법론을 객체지향 프로그래밍이라고 한다

 

많은 컴퓨터언어와 소프트웨어 객체지향 프로그래밍에 따라서 만들어지고 있다.

또한 남들이 만든 라이브러리가 OOP 방법에 따라 만들어져 있을 수도 있다

객체지향은 입문자가 중급자가 되는 길목에 있는 개념이라고 할 수 있다

코드의 양이 많아지고 남들과 공유해야할 일이 많아지고 있다면 객체지향을 공부할 시기

 

728x90
반응형
728x90

플래그(flag) 변수

 

로직 흐름을 제어할 사용하는 변수. 제어 플래그(control flag)라기도 하며,

boolean 데이터타입으로 토글 기능에 사용하기도

 

1)false true 뒤집기

2)flag 이용하여 종료 제어하기

 

 

 

프로그래밍에서는 상태를 기록하고 처리 흐름을 제어하기 위한 boolean타입 변수를 의미

참과 거짓을 나타내주는 플래그

 


 

boolean 타입의 변수 명은 가독성을 위해서 주로 아래와 같다.

  • isAnswer
  • isSuccess
  • isTrue
  • flag

그 외에도  관용적으로 사용하는 "flag" 라는 변수명을 사용하기도

 

※ 참/거짓을 구분하는 방법은 여러가지가 있을 것입니다. 1과 0으로 표기를 해도 되고, T와 F의 문자로 구분을 할 수 도 있겠지요. 그런데 왜 boolean 타입의 변수를 사용할까요?

boolean의 크기는 대략 1byte로 가장 작고, 가독성과 편의성을 위하여 사용하는 경우가 많습니다.

 

출처: <https://wikidocs.net/119689>

728x90
반응형
728x90

빌드(Build)

빌드가 왜 필요한지 먼저 알아보자

아래는 개발자들의 프로그래밍 작업화면이다

개발자들이 작업하는 코드들은 양이 엄청나서 여러 폴더들도 이루어져 작동하게 된다

일반적으로 수십,수백개가 넘는 폴더와 파일들로 하나의 프로그래밍이 완성된다

직접 작성한 소스코드, 라이브러리, 이미지파일, 기타 프로그램에 필요한 파일들로 구성된다

완성된 프로그램을 출시할 때는, 이 파일들을 날 것 그대로가 아닌 포장해서 내보내게 되는데 이를 빌드라고 한다

 

빌드하는 목적

윈도우확장자인 .exe파일처럼 파일 하나로 제공하기 위해서

프로그래밍 코드들을 압축해서 전체 크기를 줄이기 위해서

다른 사람들이 코드를 못알아보도록 난독화 하기 위해서

 

컴파일 언어의 경우 빌드에 컴파일 작업이 포함되어있다

프로그래밍 언어마다 소프트웨어 종류마다 빌드 결과가 다양하다

파일 하나로 압축되기도 하고, 많은 수의 파일들이 적은 수의 파일들로 정리되기도 하고, 파일들의 형식과 내용만 바뀌는 경우도 있다

 

빌드란?

작업하는 프로젝트 파일들을 출시하기 적합한 형태로 포장하는 일

 


 

 

배포

코딩해서 빌드한 결과물을 유저에게 전달하는 과정

 

유저들이 다운 받을 수 있는 곳에 업로드해야 하는데

데스크탑이면, 네이버, 공식홈페이지 등등

모바일이면, 구글 플레이스토어, 애플 앱스토어 등

웹사이트라면, 작업물을 서버에 올리고 실행해서 해당 사이트 도메인에 유저들이 접근할 수 있게 하는 작업

 

 

출처

https://www.youtube.com/watch?v=GYmuQJiPeM4

 

728x90
반응형
728x90

 

환경변수(Environment Variable)

'환경'이라는 단어는 컴퓨터에서 소프트웨어가 동작하는 공간을 의미

환경 변수는 컴퓨터마다 지정된 값

환경이라는 방 안에 칠판이 있고 그 안에 변수들이 적힌 것

 

환경변수의 용도

1.경로에 상관없이 파일을 찾게해줌

코드로 각 집에 '영어사전을 ${서재}에 꽂으세요'라는 코드를 보내면,

철수네는 서재가 아버지방에

영희네는 서재가 거실에 있는데

이 '서재'라는 환경변수에 집별로 적절히 들어간 값 때문에 어느 집에서든지 이 명령어로 올바른 곳에 사전을 꽂을 수 있게됨

 

자바를 설치 한 직후 환경변수를 세팅하는 것도 자바가 어디에 있던지 문제 없이 자바를 찾아 실행할 수 있게 하기 위함

 

2.

집의 ${건물종류}가 전원주택이면 잔디를 깎으세요

각 환경의 조건마다 어떤 동작을 실행할지 정할 수 있다

 

개발 할 때 보통 개발용과 배포용으로 나누어서 파일을 관리한다 

개발자가 디버깅을 쉽게하기 위해서 어떤 정보들을 뜨도록 할 수 있는데 이게 유저들이 사용할 때도 뜨면 곤란할 것이다

그렇다고 배포할 때마다 해당 코드들을 지우기도 일이 많아지기에,

개발하는 컴퓨터와 제품이 배포될 서버 등에 각각 환경변수 값을 위의 이미지처럼 따로 설정해주고 조건을 주면 개발용 컴퓨터에서만 디버깅 정보가 나타날 수 있음

 

3.

비밀번호를 철수나 영희네 집 둘 중 하나만 보내더라도 환경변수를 사용해서 코드를 작성해야함

이렇게 하지 않으려면 코드에 직접 비밀번호를 적어야하는데 비번 노출 위험이 커지기 때문에 환경변수를 쓰는 것

특히, 오픈소스로 공개되는 코드들에는 이런 보안요소들이 공개되면 위험

 

환경이란 컴퓨터가 돌아가는 전체 환경 뿐만아니라

도커의 컨테이너 같이 프로세스가 돌아가는 보다 세분화된 공간을 의미하기도 한다

 


 

라이브러리(Library) & 프레임워크(Framework)

특정 기능이 함수나 클래스 등의 형태로 제작되어 공개된 것을 가져다가 내 프로그램에 사용될 수 있는 것

모듈화된 코드 또는 그 묶음들을 라이브러리

 보통 다른 사람이 만들지만 내가 만들 수도 있고 어떤 소프트웨어든 

집을 지을 때, 집을 짓는데 사용되는 자재가 라이브러리라면, 프레임워크는 기본 골격을 갖춘 집 조립키트

컴퓨터 조립으로는, 마더보드가 프레임워크고 거기에 끼워넣는 각 파치들을 라이브러리라고 할 수 있다

 

라이브러리

ex)math, 텐서플로우, 판다스 등

프레임워크

ex)스프링, 장고, .NET, 라라벨, Express, Vue

 

 

출처

https://www.youtube.com/watch?v=GYmuQJiPeM4

728x90
반응형
728x90

 

 

디버깅(Debugging)

어원의 유래

초창기 컴퓨터에는 벌레(bug)가 들어가서 고장이 잘 났었는데,

이때 벌레(bug)를 찾아 치우는 일에서 디버깅(debugging)이라는 말이 유래됬다고함

 

코드가 길고 복잡해지면 머릿 속에서 다 둘러볼 수 없기에 코드의 일정 단계별로 

확인할 수 있도록 하나씩 찾아보게된다

여러 프로그래밍 개발에 유용한 툴들인 vs code, IntelliJ 등에는 모두 디버깅 기능이 있다

 

1.소프트웨어에 문제가 생긴 것을 잡는 것

의도치 않은 상황에 자주 마주치게 되고, 코딩 중 상당한 시간이 디버깅에 할애된다

2. 개발중

배포라는 의미와 대비되서 아직 완성되지 않은 상태의 개발중이라는 의미로도 쓰인다

 


 

컴파일러(Compiler) & 인터프리터(Interpreter)

컴퓨터 언어는 0과 1로 구성되어 있다. 

사람이 0과1로만 ㄱㄴㄷㄹ를 하나씩 다 한다고 상상해보자 정말 헬일 것이다.

쉽게 해석가능하다면 컴퓨터와 친구하자

 

컴퓨터의 언어를 사람이 알 수 있게 

사람의 언어를 컴퓨터가 알 수 있게 또는 그 중간 단계로 변역해주는 작업과정에서

미리 해놓으면 컴파일러

실행할 때마다 통역하면 인터프리터

 

프로그래머들은 이런 특성을 고려해서 자신들이 만들려는 프로그램의 언어를 선택한다

 

컴파일 언어

번역 프로그램인 컴파일러가 사람이 작성한 소스코드를 사전에 번역 해놓는 것

이렇게 미리 컴파일 해놓는 컴퓨터언어들을 컴파일 언어라고 부른다

ex) C,C++ 등

 

인터프리터 언어(=스크립트 언어)

장점 : 코드 수정이 잦은 서비스의 경우 업데이트가 용이

단점 : 컴파일언어에 비해 느리다, 프로그래머가 짠 코드가 그대로 배포되어 사용되기에 코드가 보다 쉽게 노출되기 쉽다

ex) 자바스크립트,파이썬,루비 등

 

 

 

출처

https://www.youtube.com/watch?v=GYmuQJiPeM4

728x90
반응형
728x90

 

프로그래밍, 엑셀의 매크로, 포토샵의 액션 : 시간의 순서에 따라서 명령을 실행시키는 기능들

"시간의 순서에 따라서 명령을 실행시킨다"로 대부분의 작업을 한다

 

 

흐아 완강!!

뿌듯!!

728x90
반응형
728x90

절대경로(Absolute Path) & 상대경로(Relative Path)란?

 

리눅스,html 등등 여러곳에서 볼 수 있다고 하며,

필자는 주로 VS code 사용하면서 이 개념들이 나와서 궁금해서 

알아보게 되었다

 

 

1.절대경로(Absolute Path)

전체 경로를 기입하는 방식

c,d드라이브 같은 최상위 디렉토리까지 모두 포함된 경로

OS에서는 절대경로로만 인식이 가능

ex) D:\Dropbox\Developer\python\Workspace_Python\hello world.txt

 

 

2.상대경로(Relative Path)

현재 자신이 속한 디렉토리를 기준으로 작성된 경로

말그대로 상대적인 경로라 비교할 대상이 있어야하며 그 비교대상은 자신이 속한 디렉토리 

컴퓨터 안에서 기준이 되는 경로를 중심으로 절대경로가 구성되는 개념

OS가 상대경로를 인식할 수 있는건 기준이 되는 경로가 상대경로를 절대경로로 변환하여 OS에 전달하기 때문

ex) Workspace_Python\hello world.txt

    or ./../../ Workspace_Python\hello world.txt 식으로 /과.으로 앞 경로들이 생략된다

 

 

※ 상대경로 개발배경 ※

지정하고자 하는 파일의 경로가 자주 변경되는 상황이거나 루트 디렉토리가 서로 다른 OS을 다룰 경우,

매번 새로 경로지정을 해줘야 한다. 바꿔야할 양이 많다면 한숨이 절로 나올 것이다...

리눅스 같은 경우에는 윈도우와 달리 특정 디렉토리 액세스 할 때마다 풀경로를 다 적어줘야 한다고한다.

 

 

728x90
반응형

+ Recent posts