Итак, этот проект немного за пределами моей зоны комфорта. Я бы описал свою нынешнюю стадию развития как та, в которой: «Я знаю о таких вещах, как: сбор, дизайн-паттерны и вообще то, что делает для хорошего ООП. Но все это в моих нынешних пределах. И поэтому я, вероятно, не использую их и не пытаюсь использовать их столько, сколько должен ».Java: советы и предложения ООП для продвижения небольшого приложения
Я пытаюсь изменить это, поэтому я работал над довольно небольшим вызовом/приложением, которое действительно поддается выше и просить себя написать умный, чистый код. Я довольно доволен тем, что мне удалось сделать до сих пор. Тем не менее, у меня осталось два класса, которые мне еще нужно погрузиться. У меня много идей о том, как это сделать. Я уверен, что некоторые из них хорошие, а некоторые - плохие, но больше всего на свете, я думаю, что я над мыслями.
Короче, вот что я пытаюсь сделать, вот что у меня есть, а вот где мне нужно пойти:
То, что я пытаюсь сделать: Простейшим способ заявить цели для этого приложения: у меня есть кредитная карта (этот класс - класс, который я сделал), у меня есть кошельки, и у меня есть люди. Рассматривая это с точки зрения высокого уровня, я кладу карточки в кошельки и кошельки в людей. У меня 3 карты, они действительно отличаются только их «именами» и процентными ставками. Я хочу, чтобы некоторые кошельки имели 1 карточку, а для других - все три. Что касается кошельков, то каждый человек нуждается хотя бы в одном, но я бы хотел дать кому-то два. И это действительно так, я разработал некоторую математику для простого интереса к карточке, которую я свяжу в какой-то момент, но в основном я ищу для создания чистого и хорошо разработанного приложения.
Что у меня есть: Как я уже сказал, у меня есть класс CreditCard
. Я все еще прекрасно настраиваю его, но мне удалось его улучшить, и я не очень доволен этим. Я включу этот класс ниже, чтобы предоставить контекст для приложения, а также, чтобы вы могли предоставить предложения, если это необходимо. В верхней части класса вы увидите много документации. Это в основном только математика, и это логика, для разработки простых интересов. Вот увидишь. Но у меня также есть два теста, которые я кодирую, вы тоже это увидите.
Куда мне нужно: У меня есть кредитные карты. Теперь мне нужны кошельки и люди. С моей точки зрения, я видел, как кошелек использует ArrayList. Хотя, может быть, другой вариант коллекций может служить лучше. У меня в основном (в основном) используется ArrayList, и поэтому я обычно использую ArrayList. Это доработано до сих пор ... Помимо этого, я подумывал о том, чтобы сделать Кошелек и Личность абстрактными, что кажется хорошей идеей, но в очередной раз не так много опыта в принятии этих решений.
Итак, в конце всего этого, я ищу какое-то направление, конформирование хороших идей и альтернатив более слабым. Если они могут сочетаться с примерами или если предложения могут выражаться как в словах, так и в коде, это было бы оптимально, потому что я получаю гораздо больше советов, когда вижу это в действии. Для меня предложение ОК с кодом, «вообще» более полезно, чем простое предложение без него. Все дело в возможности применить этот совет. Но, это только я и все разные. То, что я могу вам сказать, это определенно, заключается в том, что все предложения, независимо от того, что они есть, будут оценены и полезны. Потому что я делаю это, я здесь, чтобы учиться.
/*
* Test Cases:
* 1) 1 person has 1 wallet and 3 cards (1 Visa, 1 MC 1 Discover) – Each Card has a balance of $100 – calculate the total interest (simple interest) for this person and per card.
*
* 2) 1 person has 2 wallets Wallet 1 has a Visa and Discover , wallet 2 a MC - each card has $100
* balance - calculate the total interest(simple interest) for this person and interest per wallet
*/
/*
* Formula Key:
*
* Algebraic Symbols:
* A = Total Accrued Amount (principal + interest)
* P = Principal Amount
* I = Interest Amount
* r & R = Rate of Interest per year in percentage & decimal
* t = Time Period involved in months or years(duration pertaining to this equation)
*
* Rate of Interest, Percentage To Decimal Equations:
* R = r * 100
* r = R/100
*
* Simple Interest Equation:
* A = P(1 + (r * t))
*/
/*
* Card:
* VISA 10%
*
* Equation:
* Accrued Amount(A) = Principle Amount(P) * (1 +(Interest Rate(r) * Time Period(t)))
*
* Calculation:
* First, converting Interest Rate(R) of 10%, to, Interest Rate(r) of 0.1
* r = R/100 = 10%/100 = 0.1 per year,
* put Time Period(t) of 1 month into years,
* months/year(1 month ÷ 12) = 0.08 years
*
* Solving Equation:
* A = 100(1 + (0.1 × 0.08)) = 100.8
* A = $ 100.80
*
* Solution:
* The total Amount Accrued(A), Principal(P) plus Interest(I),
* from Simple Interest on a Principal(P) of $ 100.00
* at a Rate(r = R/100(convert a percentage to a decimal)) of 10% or 0.1 per year
* for 0.08 years, 1 month(t) is $ 100.80.
*/
/*
* Card:
* MC(Master Card) 5%
*
* Equation:
* Accrued Amount(A) = Principle Amount(P) * (1 +(Interest Rate(r) * Time Period(t)))
*
* Calculation:
* First, converting Interest Rate(R) of 5%, to, Interest Rate(r) of 0.05
* r = R/100 = 5%/100 = 0.05 per year,
* put Time Period(t) of 1 month into years,
* months/year(1 month ÷ 12) = 0.08 years
*
* Solving Equation:
* A = 100(1 + (0.05 × 0.08)) = 100.4
* A = $ 100.40
*
* Solution:
* The total Amount Accrued(A), Principal(P) plus Interest(I),
* from Simple Interest on a Principal(P) of $ 100.00
* at a Rate(r = R/100(convert a percentage to a decimal)) of 5% or 0.05 per year
* for 0.08 years, 1 month(t) is $ 100.40.
*/
/*
* Card:
* Discover 1%
*
* Equation:
* Accrued Amount(A) = Principle Amount(P) * (1 +(Interest Rate(r) * Time Period(t)))
*
* Calculation:
* First, converting Interest Rate(R) of 1%, to, Interest Rate(r) of 0.01
* r = R/100 = 1%/100 = 0.01 per year,
* put Time Period(t) into years,
* months/year(1 month ÷ 12) = 0.08 years
*
*
* Solving Equation:
* A = 100(1 + (0.01 × 0.08)) = 100.08
* A = $ 100.08
*
* Solution:
* The total Amount Accrued(A), Principal(P) Plus Interest(I),
* from Simple Interest on a Principal(P) of $ 100.00
* at a Rate(r = R/100(convert a percentage to a decimal)) of 1% or 0.01 per year
* for 0.08 years, 1 month(t) is $ 100.08.
*/
public class CreditCard
{
private BrandOfCard brandOfCard;
private static final double PRINCIPAL_AMOUNT = 100.00;
private static final double TIME_PERIOD = 0.08;
public CreditCard(BrandOfCard brandOfCard)
{
this.brandOfCard = brandOfCard;
}
/*
* A = P(1 + (r * t))
*/
public double getAccruedAmount()
{
double accruedAmount;
accruedAmount = PRINCIPAL_AMOUNT * (1 + (brandOfCard.getInterestRate() * TIME_PERIOD));
return accruedAmount;
}
public enum BrandOfCard
{
VISA(0.1), MASTER_CARD(0.05), DISCOVER(0.01);
private final double interestRate;
BrandOfCard(double interestRate)
{
this.interestRate = interestRate;
}
public double getInterestRate()
{
return interestRate;
}
}
//bottom of class
public static void main(String[] args)
{
CreditCard visa = new CreditCard(BrandOfCard.VISA);
CreditCard masterCard = new CreditCard(BrandOfCard.MASTER_CARD);
CreditCard discover = new CreditCard(BrandOfCard.DISCOVER);
double accruedAmount;
accruedAmount = visa.getAccruedAmount();
System.out.println("Visa card, with a principle amount of $100.00, & an interest rate of 10%, " +
"has accrued $" + (accruedAmount - PRINCIPAL_AMOUNT) + " in interest, " +
"over the last monthly term.");
System.out.println("The total amount due on this card is now $" + accruedAmount);
accruedAmount = masterCard.getAccruedAmount();
System.out.println("Master Card card, with a principle amount of $100.00, & an interest rate of 5%, " +
"has accrued $" + (accruedAmount - PRINCIPAL_AMOUNT) + " in interest, " +
"over the last monthly term.");
System.out.println("The total amount due on this card is now $" + accruedAmount);
accruedAmount = discover.getAccruedAmount();
System.out.println("Discover card, with a principle amount of $100.00, & an interest rate of 1%, " +
"has accrued $" + (accruedAmount - PRINCIPAL_AMOUNT) + " in interest, " +
"over the last monthly term.");
System.out.println("The total amount due on this card is now $" + accruedAmount);
}
}
W шляпа является целью «Кошелек»? –
ну, я думаю, во-первых, мне показалось, что это имеет смысл для меня, «пытаясь заставить ваш код лучше представлять мир живого мира». Так вот, из этого я начал пытаться решить, почему кошелек полезен и что он на самом деле делает. Чтобы довести это до уровня кода, я бы сказал, что кошелек содержит группу подобных объектов, в данном случае карт. Если у человека должно быть два кошелька, кошельки хранят предметы и обеспечивают разделение/разницу между двумя группами.Вот что я хотел бы сделать в кошельках. – ReedWilliams19842004
Хотя это верно, цель ООП заключается не в том, чтобы реализовать каждый возможный класс в вашем дизайне, а только в тех, которые влияют на функциональность. Как баланс карты, интерес и т. Д. Зависят от конкретного кошелька, в котором он хранится? –