SlideShare a Scribd company logo
1 of 61
Dick’s Sporting Goods
Manami Maehama
Professor Martin
Horizontal & Vertical Analysis
Balance Sheet
Cash & Short Term Investments
Cash and Short Term investments is the sum of two balance
sheet line items: cash
and equivalents and short term investments in marketable
securities.
3 ways to improve:
1. Lease, Don’t Buy.
2. Offer Discounts on Loans
3. Conduct Customer Credit Checks
Assets Horizontal
2016 2017 2018 2019 2020 2021
119M (39%) 165M (-39%) 101M (13%) 114M (-39%) 70M (-
6.5%) 69M
Total Accounts Receivable
Total Accounts receivable is the balance of money due to a firm
for goods or
services delivered or used but not yet paid for by customers.
3 ways to improve :
1. Move fast on past-due receivables.
2. Consider offering an early payment discount
3. Consider offering a payment plan
ASSET Horizontal
2016 2017 2018 2019 2020 2021
67M (16%) 78M (-17%) 65M (-32%) 44M (34%) 59M (0.25%)
59M
Inventories
Inventory is the term for the goods available for sale and raw
materials used to
produce goods available for sale.
3 ways to improve :
1. Avoid dead stock.
2. Save on storage costs
3. Regular auditing
ASSET Horizontal
2016 2017 2018 2019 2020 2021
2B (0%) 2B (0%) 2B (0%) 2B (0%) 2B (0%) 2B
Total Current Assets
Total current assets represent all the assets of a company that
are expected to be conveniently
sold, consumed, utilized or exhausted through the standard
business operations, which can lead to
their conversion to a cash value over the next one year period.
3 ways to improve :
1. Pay off Current Liabilities.
2. Sell-off Unproductive Assets.
3. Improve Current Asset by Rising Shareholders Funds
ASSET Horizontal
2016 2017 2018 2019 2020 2021
2B (0%) 2B (0%) 2B (0%) 2B (0%) 2B (0%) 2B
Net Property, Plant & Equipment
Net Property, Plant, and Equipment is the value of all buildings,
land, furniture, and
other physical capital that a business has purchased to run its
business.
3 ways to improve :
1. Ins and outs of depreciation
2. Use an accelerated method that takes most most of the
depreciation up front
3. Subtract depreciation over time
ASSET Horizontal
2016 2017 2018 2019 2020 2021
1B (100%) 2B (0%) 2B (0%) 2B (100%) 4B (50%) 5B
Intangible Assets
An intangible asset is an asset that is not physical in nature.
3 ways to improve:
1. Identify Your Intangible Asset
2. Standardize Systems and Processes
3. Develop Your Intangibles
ASSET Horizontal
2016 2017 2018 2019 2020 2021
310M (24%) 385M (0.5%) 387M (-2%) 380M (-10%) 340M
(3%) 340M
Net Goodwill
Goodwill is an intangible asset that is associated with the
purchase of one
company by another.
3 ways to improve:
1. Cash-Flow Statement Basics
2. Investing Cash Flow
3. Financing Cash Flow
ASSET Horizontal
2016 2017 2018 2019 2020 2021
200M (23%) 245M (2%) 250M (0%) 250M (-2%) 245M (6%)
245M
Other Assets
Other assets are a grouping of accounts that are listed as a
separate line item in
the assets section of the balance sheet.
3 ways to improve:
1. Find new sources of income
2. Get out of debt
3. Spend less
ASSET Horizontal
2016 2017 2018 2019 2020 2021
83M (30%) 108M (11%) 120M (-12%) 106M (26%) 134M
(14%) 152M
Tangible Other Assets
Tangible assets include both fixed assets, such as machinery,
buildings and land, and
current assets, such as inventory.
3 ways to improve:
1. A high net tangible assets value can serve as a cushion
against uncertainty that can
take place in the market and help to support a company’s stock
price.
2. Determining this value helps to find out if the market share
price of a company is
overvalued or undervalued.
3. As tangible current assets can easily be converted into cash,
they provide liquidity to
the business and, thus, reduce risk
ASSET Horizontal
2016 2017 2018 2019 2020 2021
83M (30%) 108M (11%) 120M (-12%) 106M (26%) 134M
(14%) 152M
Total Assets
Total assets refers to the total amount of assets owned by a
person or entity.
3 ways to improve:
1. Reduce asset base
2. Improve Productivity And Lower Costs
3. Increase Sales Revenue
ASSET Horizontal
2016 2017 2018 2019 2020 2021
4B (0%) 4B(0%) 4B(0%) 4B(75%) 7B(19%) 8B
Total Accounts Receivable & Inventories
ASSET Vertical
2016 2017 2018 2019 2020 2021
67M (2%) 78M (2%) 65M (2%) 44M (1%) 59M (1%) 2%
Total Assets
2016 2017 2018 2019 2020
4B 4B 4B 4B 7B
2016 2017 2018 2019 2020 2021
2B (50%) 2B (50%) 2B (50%) 2B (50%) 2B (29%) 49%
Total Accounts
Receivable
Inventories
Cash & short term investments & Total current assets
ASSET Vertical
2016 2017 2018 2019 2020 2021
119M (3%) 165M
(4%)
101M
(3%)
114M
(3%)
70M (1%) (3%)
Total Assets
2016 2017 2018 2019 2020
4B 4B 4B 4B 7B
2016 2017 2018 2019 2020 2021
2B (50%) 2B (50%) 2B (50%) 2B (50%) 2B (29%) (49%)
Cash & short
term
investments
Total current
assets
Net Property, Plant & Equipment & Intangible Assets
ASSET Vertical
2016 2017 2018 2019 2020 2021
1B (25%) 2B (50%) 2B (50%) 2B (50%) 4B (57%) (46%)
Total Assets
2016 2017 2018 2019 2020
4B 4B 4B 4B 7B
2016 2017 2018 2019 2020 2021
310M (8%) 385M
(10%)
387M
(10%)
380M
(10%)
340M (5%) (9%)
Net Property,
Plant &
Equipment
Intangible
Assets
Net Goodwill & Other Assets
ASSET Vertical
2016 2017 2018 2019 2020 2021
200M (5%) 245M
(6%)
250M
(6%)
250M
(6%)
245M (4%) 5%
Total Assets
2016 2017 2018 2019 2020
4B 4B 4B 4B 7B
2016 2017 2018 2019 2020 2021
83M (2%) 108M (3%) 120M (3%) 106M (3%) 134M (2%) 3%
Net Goodwill
Other Assets
Tangible Other Assets
ASSET Vertical
2016 2017 2018 2019 2020 2021
83M (2%) 108M
(3%)
120M
(3%)
106M
(3%)
134M (2%) 3%
Total Assets
2016 2017 2018 2019 2020
4B 4B 4B 4B 7B
Tangible Other
Assets
ST Debt & Current Portion LT Debt
The current portion of long-term debt is the amount of principal
that will be due within one year of
the date of the balance sheet. This amount is reported on the
balance sheet as one of the
company's current liabilities.
3 ways to improve:
1. A company can keep its long-term debt from ever being
classified as a current liability by
periodically rolling forward the debt into instruments with
longer maturity dates and balloon
payments.
2. Pay debts back on time
3. Stop creating more debt
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
589,000
(10%)
646,000
(67%)
5M (0%) 5M (83%) 423M (40%) 592M
Accounts Payable
Money owed by a company to its creditors.
3 ways to improve:
1. Go paperless when possible
2. Look for discounts
3. Standardize your accounts payable workflow process
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
678M (12%) 756M (12%) 843M (6%) 890M (12%) 1B (11%)
110M
Income Tax Payable
Income tax payable is a type of account in the current liabilities
section of a
company's balance sheet. It is compiled of taxes due to the
government within one
year.
3 ways to improve:
1. Open an interest-bearing bank account
2. Skip some of the credits for which you are eligible
3. Accelerate advanced payments in the current year instead of
delaying
payment until the next tax year.
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
68M (26%) 86M (-60%) 34M (15%) 39M (-74%) 10M (-93%)
700,000
Other Current Liabilities
Other Current Liabilities are categories of short-term debt that
are lumped together
on the balance sheet.
3 ways to improve: to reduce
1. Sell unnecessary assets
2. Factor invoices
3. Use investments or cash to pay off loans
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
445M (25%) 555M (-2%) 543M (5%) 570M (13%) 641M (10%)
705M
Miscellaneous Current Liabilities
Miscellaneous Current Liabilities is an account for current
liabilities that do not fall
into any of the categories already defined.
3 ways to improve: to reduce
1. Reduce costs
2. Increase income
3. Restructure liabilities
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
350M (19%) 418M
(-0.2%)
417M (-3%) 405M (58%) 641M (18%) 756M
Total Current Liabilities
Total Current Liabilities are the claims to the company's assets
that are due within
one year or the cycle of operations.
3 ways to improve:
1. Restructure assets
2. Raise more capital
3. Exit the business
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
1B (0%) 1B (0%) 1B (100%) 2B (0%) 2B (25%) 2.5B
Long Term Debt
Long Term Debt is any amount of outstanding debt a company
holds that has a
maturity of 12 months or longer.
3 ways to improve: to reduce
1. Increase profitable sales
2. Sell assets and lease them back
3. Bring in an investor
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
5M(0%) 5M (1100%) 60M (-8%) 55M
(5355%)
3B (1612%) 51B
Deferred Taxes-Debit
Corporate bookkeepers debit an asset account to increase its
value and credit the
account to reduce its worth.
3 ways to improve:
1. Try to stop losses from operations
2. Pay the taxes
3. Use the straight line method
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
6M(667%) 46M (-67%) 14M (-7%) 13M (8%) 14M (150%) 35M
Other Liabilities
Other Liabilities are all miscellaneous obligations that a
company lumps together
on financial statements.
3 ways to improve:
1. Sell unnecessary assets
2. Convert necessary assets into liabilities
3. Factor invoices
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
175M (11%) 195M (9%) 213M (-5%) 203M(-34%) 134M (-5%)
127M
Total Liabilities
Total liabilities are the aggregate debt and financial obligations
owed by a
business to individuals and organizations at any specific period
of time.
3 ways to improve:
1. Rework your business budget
2. Reduce business expenses
3. Increase customer sales
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
2B (0%) 2B (-0%) 2B(0%) 2B(150%) 5B(38%) 7B
ST Debt & Current Portion LT Debt & Accounts Payable
Liabilities Vertical
2016 2017 2018 2019 2020 2021
589,000
(0.1%)
646,000
(0.1%)
5M (0.3%) 5M (0.3%) 423M (8%) 2%
Total Liabilities
2016 2017 2018 2019 2020
2B 2B 2B 2B 5B
2016 2017 2018 2019 2020 2021
678M (34%) 756M (38%) 843M (42%) 890M (45%) 1B (20%)
36%
ST Debt &
Current Portion
LT Debt
Accounts
Payable
Income Tax Payable & Other Current Liabilities
Liabilities Vertical
2016 2017 2018 2019 2020 2021
68M (3%) 86M (4%) 34M (2%) 39M (2%) 10M (0.2%) 2%
Total Liabilities
2016 2017 2018 2019 2020
2B 2B 2B 2B 5B
2016 2017 2018 2019 2020 2021
445M (22%) 555M (28%) 543M (27%) 570M (29%) 641M
(13%) 24%
Income Tax
Payable
Other current
liabilities
Miscellaneous Current Liabilities & Total Current Liabilities
Liabilities Vertical
2016 2017 2018 2019 2020 2021
350M (18%) 418M (21%) 417M (21%) 405M (20%) 641M
(13%) 19%
Total Liabilities
2016 2017 2018 2019 2020
2B 2B 2B 2B 5B
2016 2017 2018 2019 2020 2021
1B (50%) 1B (50%) 1B (50%) 2B (100%) 2B (40%) 58%
Miscellaneous
Current
Liablilities
Total Current
Liabilities
Long Term Debt & Deferred Taxes-Debit
Liabilities Vertical
2016 2017 2018 2019 2020 2021
5M(0.3%) 5M (0.3%) 60M (3%) 55M (3%) 3B (60%) 13%
Total Liabilities
2016 2017 2018 2019 2020
2B 2B 2B 2B 5B
2016 2017 2018 2019 2020 2021
6M(0.3%) 46M (2%) 14M (0.7%) 13M (0.7%) 14M (0.3%) 0.8%
Long Term Debt
Deferred
Taxes-Debit
Other Liabilities
Liabilities Vertical
2016 2017 2018 2019 2020 2021
175M (9%) 195M (10%) 213M (11%) 203M(10%) 134M (3%)
9%
Total Liabilities
2016 2017 2018 2019 2020
2B 2B 2B 2B 5B
Other Liabilities
Beginning iOS 7 Development: Exploring the iOS SDK
by Jack Nutting, Fredrik Olsson, David Mark and Jeff LaMarche
Apress. (c) 2014. Copying Prohibited.
Reprinted for Personal Account, American Public University
System
[email protected]
Reprinted with permission as a subscription benefit of Skillport,
All rights reserved. Reproduction and/or distribution in whole
or in part in electronic,paper or other forms without written
permission is prohibited.
Chapter 3: Handling Basic Interaction
Overview
Our Hello, World application was a good introduction to iOS
development using Cocoa Touch, but it was missing a crucial
capability—the ability to interact with the user.
Without that, our application is severely limited in terms of
what it can accomplish.
In this chapter, we're going to write a slightly more complex
application—one that will feature two buttons as well as a label
(see Figure 3-1). When the user taps either of
the buttons, the label's text will change. This may seem like a
rather simplistic example, but it demonstrates the key concepts
involved in creating interactive iOS apps.
Just for fun, we're also going to introduce you to the
NSAttributedString class, which lets you use styled text with
many CocoaTouch GUI elements.
Figure 3-1: The simple two-button application we will build in
this chapter
The Model-View-Controller Paradigm
Before diving in, a bit of theory is in order. The designers of
Cocoa Touch were guided by a concept called Model-View-
Controller (MVC), which is a very logical way of
dividing the code that makes up a GUI-based application. These
days, almost all object-oriented frameworks pay a certain
amount of homage to MVC, but few are as
true to the MVC model as Cocoa Touch.
The MVC pattern divides all functionality into three distinct
categories:
Model: The classes that hold your application's data.
View: Made up of the windows, controls, and other elements
that the user can see and interact with.
Controller: The code that binds together the model and view. It
contains the application logic that decides how to handle the
user's inputs.
The goal in MVC is to make the objects that implement these
three types of code as distinct from one another as possible.
Any object you create should be readily
identifiable as belonging in one of the three categories, with
little or no functionality that could be classified as being either
of the other two. An object that implements a
button, for example, shouldn't contain code to process data
when that button is tapped, and an implementation of a bank
account shouldn't contain code to draw a table
to display its transactions.
MVC helps ensure maximum reusability. A class that
implements a generic button can be used in any application. A
class that implements a button that does some
particular calculation when it is clicked can be used only in the
application for which it was originally written.
When you write Cocoa Touch applications, you will primarily
create your view components using a visual editor within Xcode
called Interface Builder, although you will
also modify, and sometimes even create, your user interfaces
from code.
Your model will be created by writing Objective-C classes to
hold your application's data or by building a data model using
something called Core Data, which you'll learn
about in Chapter 13. We won't be creating any model objects in
this chapter's application because we do not need to store or
preserve data. However, we will introduce
model objects as our applications get more complex in future
chapters.
Your controller component will typically be composed of
classes that you create and that are specific to your application.
Controllers can be completely custom classes
(NSObject subclasses), but more often they will be subclasses
of one of several existing generic controller classes from the
UIKit framework, such as UIViewController
(as you'll see shortly). By subclassing one of these existing
classes, you will get a lot of functionality for free and won't
need to spend time recoding the wheel, so to
speak.
As we get deeper into Cocoa Touch, you will quickly start to
see how the classes of the UIKit framework follow the
principles of MVC. If you keep this concept in the back
of your mind as you develop, you will end up creating cleaner,
more easily maintained code.
Beginning iOS 7 Development: Exploring the iOS SDK
Reprinted for ZU7S5/5738005, American Public University
System Apress, Jack Nutting, Fredrik Olsson, David Mark, and
Jeff LaMarche (c) 2014, Copying Prohibited
Page 2 of 16
Creating Our Project
It's time to create our next Xcode project. We're going to use
the same template that we used in the previous chapter: Single
View Application. By starting with this
simple template again, it will be easier for you to see how the
view and controller objects work together in an iOS application.
We'll use some of the other templates in
later chapters.
Launch Xcode and select File New Project… or press N. Select
the Single View Application template, and then click Next.
You'll be presented with the same options sheet that you saw in
the previous chapter. In the Product Name field, type the name
of our new application, Button Fun. The
Organization Name, Company Identifier, and Class Prefix fields
should still have the values you used in the previous chapter
(Apress, com.apress, and BID), so you can
leave those alone. Just as we did with Hello, World, we're going
to write an iPhone application, so select iPhone for Devices.
Figure 3-2 shows the completed options
sheet.
Figure 3-2: Naming your project and selecting options
Hit Next, and you'll be prompted for a location for your project.
You can leave the Create git repository checkbox checked or
unchecked, whichever you prefer. Save the
project with the rest of your book projects.
Looking at the View Controller
A little later in this chapter, we'll design a view (or user
interface) for our application using Interface Builder, just as we
did in the previous chapter. Before we do that,
we're going to look at and make some changes to the source
code files that were created for us. Yes, Virginia, we're actually
going to write some code in this chapter.
Before we make any changes, let's look at the files that were
created for us. In the project navigator, the Button Fun group
should already be expanded; but if it's not,
click the disclosure triangle next to it (see Figure 3-3).
Figure 3-3: The project navigator showing the class files that
were created for us by the project template. Note that our class
prefix was automatically incorporated into
the class file names
The Button Fun folder should contain four source code files (the
ones that end in .h or .m) along with a storyboard file and an
asset catalog for containing any images
our app needs. The four source code files implement two classes
that our application needs: our application delegate and the
view controller for our application's only
view. Notice that Xcode automatically added the prefix we
specified to all of our class names.
We'll look at the application delegate a little later in the
chapter. First, we'll work with the view controller class that was
created for us.
The controller class called BIDViewController is responsible
for managing our application's view. The BID part of the name
is derived automatically from the class prefix
we specified, and the ViewController part of the name identifies
that this class is, well, a view controller. Click
BIDViewController.h in the Groups & Files pane, and take
Beginning iOS 7 Development: Exploring the iOS SDK
Reprinted for ZU7S5/5738005, American Public University
System Apress, Jack Nutting, Fredrik Olsson, David Mark, and
Jeff LaMarche (c) 2014, Copying Prohibited
Page 3 of 16
a look at the contents of the class's header file:
#import <UIKit/UIKit.h>
@interface BIDViewController : UIViewController
@end
Not much to it, is there? BIDViewController is a subclass of
UIViewController, which is one of those generic controller
classes we mentioned earlier. It is part of the
UIKit framework, and by subclassing this class, we get a bunch
of functionality for free. Xcode doesn't know what our
application-specific functionality is going to be, but
it does know that we're going to have some, so it has created
this class for us to write that application-specific functionality.
Understanding Outlets and Actions
In Chapter 2, you used Xcode's Interface Builder to design a
simple user interface. A moment ago, you saw the shell of a
view controller class. There must be some way
for the code in this view controller class to interact with the
objects in the storyboard, right?
Absolutely! A controller class can refer to objects in a
storyboard or nib file by using a special kind of property called
an outlet. Think of an outlet as a pointer that points
to an object within the user interface. For example, suppose you
created a text label in Interface Builder (as we did in Chapter 2)
and wanted to change the label's text
from within your code. By declaring an outlet and connecting
that outlet to the label object, you would then be able to use the
outlet from within your code to change the
text displayed by the label. You'll see how to do just that in this
chapter.
Going in the opposite direction, interface objects in our
storyboard or nib file can be set up to trigger special methods in
our controller class. These special methods are
known as action methods (or just actions). For example, you can
tell Interface Builder that when the user taps a button, a specific
action method within your code
should be called. You could even tell Interface Builder that
when the user first touches a button, it should call one action
method; and then later, when the finger is lifted
off the button, it should call a different action method.
Xcode supports multiple ways of creating outlets and actions.
One way is to specify them in our source code before using
Interface Builder to connect them with our
code. Xcode's assistant view gives us a much faster and more
intuitive approach that lets us create and connect outlets and
actions in a single step, a process we're
going to look at shortly. But before we start making
connections, let's talk about outlets and actions in a little more
detail. Outlets and actions are two of the most basic
building blocks you'll use to create iOS apps, so it's important
that you understand what they are and how they work.
Outlets
Outlets are special Objective-C class properties that are
declared using the keyword IBOutlet. Declaring an outlet is
done either in your controller's class header file or
in a special section (called the class extension) of your
controller's implementation file. It might look something like
this:
@property (weak, nonatomic) IBOutlet UIButton *myButton;
This example is an outlet called myButton, which can be set to
point to any button in Interface Builder.
The IBOutlet keyword isn't built into the Objective-C language.
It's a simple C preprocessor definition in a system header file,
where it looks something like this:
#ifndef IBOutlet
#define IBOutlet
#endif
Confused? IBOutlet does absolutely nothing as far as the
compiler is concerned. Its sole purpose is to act as a hint to tell
Xcode that this is a property that we're going
to want to connect to an object in a nib file. Any property that
you create and want to connect to an object in a nib file must be
preceded by the IBOutlet keyword.
Fortunately, Xcode will now create outlets for us automatically.
Outlet Changes
Over time, Apple has changed the way that outlets are declared
and used. Since you are likely to run across older code at some
point, let's look at how outlets have
changed.
In the first version of this book, we declared both a property
and its underlying instance variable for our outlets. At that
time, properties were a new construct in the
Objective-C language, and they required you to declare a
corresponding instance variable:
@interface MyViewController : UIViewController
{
UIButton *myButton;
}
@property (weak, nonatomic) UIButton *myButton;
@end
Back then, we placed the IBOutlet keyword before the instance
variable declaration:
IBOutlet UIButton *myButton;
This was how Apple's sample code was written at the time. It
was also how the IBOutlet keyword had traditionally been used
in Cocoa and NeXTSTEP.
By the time we wrote the second edition of the book, Apple had
moved away from placing the IBOutlet keyword in front of the
instance variable, and it became standard
to place it within the property declaration:
@property (weak, nonatomic) IBOutlet UIButton *myButton;
Even though both approaches continued to work (and still do),
we followed Apple's lead and changed the book code so that the
IBOutlet keyword was in the property
declaration rather than in the instance variable declaration.
When Apple switched the default compiler from the GNU C
Compiler (GCC) to the Low Level Virtual Machine (LLVM)
recently, it stopped being necessary to declare
instance variables for properties. If LLVM finds a property
without a matching instance variable, it will create one
automatically. As a result, in this edition of the book,
we've stopped declaring instance variables for our outlets
altogether.
All of these approaches do exactly the same thing, which is to
tell Interface Builder about the existence of an outlet. Placing
the IBOutlet keyword on the property
declaration is Apple's current recommendation, so that's what
we're going to use. But we wanted to make you aware of the
history in case you come across older code
that has the IBOutlet keyword on the instance variable.
Beginning iOS 7 Development: Exploring the iOS SDK
Reprinted for ZU7S5/5738005, American Public University
System Apress, Jack Nutting, Fredrik Olsson, David Mark, and
Jeff LaMarche (c) 2014, Copying Prohibited
Page 4 of 16
You can read more about Objective-C properties in the book
Learn Objective-C on the Mac by Scott Knaster, Waqar Malik,
and Mark Dalrymple (Apress, 2012) and in
the document called Introduction to the Objective-C
Programming Language, available from Apple's Developer web
site at
http://developer.apple.com/library/ios/#documentation/
Cocoa/Conceptual/ProgrammingWithObjectiveC.
Actions
In a nutshell, actions are methods that are declared with a
special return type, IBAction, which tells Interface Builder that
this method can be triggered by a control in a
nib file. The declaration for an action method will usually look
like this:
- (IBAction)doSomething:(id)sender;
It might also look like this:
- (IBAction)doSomething;
The actual name of the method can be anything you want, but it
must have a return type of IBAction, which is the same as
declaring a return type of void. A void return
type is how you specify that a method does not return a value.
Also, the method must either take no arguments or take a single
argument, usually called sender. When
the action method is called, sender will contain a pointer to the
object that called it. For example, if this action method was
triggered when the user tapped a button,
sender would point to the button that was tapped. The sender
argument exists so that you can respond to multiple controls
using a single action method. It gives you a
way to identify which control called the action method.
Tip There's actually a third, less frequently used type of
IBAction declaration that looks like this:
- (IBAction)doSomething:(id)sender
forEvent:(UIEvent *)event;
We'll begin talking about control events in the next chapter.
It won't hurt anything if you declare an action method with a
sender argument and then ignore it. You will likely see a lot of
code that does just that. Action methods in
Cocoa and NeXTSTEP needed to accept sender whether they
used it or not, so a lot of iOS code, especially early iOS code,
was written that way.
Now that you understand what actions and outlets are, you'll see
how they work as we design our user interface. Before we start
doing that, however, we have one quick
piece of housekeeping to do to keep everything neat and
orderly.
Cleaning Up the View Controller
Single-click BIDViewController.m in the project navigator to
open the implementation file. As you can see, there's a small
amount of boilerplate code in the form of
viewDidLoad and didReceiveMemoryWarning methods that
were provided for us by the project template we chose. These
methods are commonly used in
UIViewController subclasses, so Xcode gave us stub
implementations of them. If we need to use them, we can just
add our code there. However, we don't need any of
these stub implementations for this project, so all they're doing
is taking up space and making our code harder to read. We're
going to do our future selves a favor and
clear away methods that we don't need, so go ahead and delete
those methods.
At the top of the file, you'll also see an empty class extension
ready for us to use. A class extension is a special kind of
Objective-C category declaration that lets you
declare methods and properties that will only be usable within a
class's primary implementation block, within the same file.
We'll use class extensions later in the book but
not here, so delete the empty @implementation…@end pair as
well. When you're finished, your implementation should look
like this:
#import "BIDViewController.h"
@implementation BIDViewController
@end
That's much simpler, huh? Don't worry about those methods you
just deleted. You'll be introduced to most of them throughout
the course of the book.
Designing the User Interface
Make sure you save the changes you just made, and then single-
click Main.storyboard to open your application's view in
Xcode's Interface Builder (see Figure 3-4). As
you'll remember from the previous chapter, the white window
that shows up in the editor represents your application's one and
only view. If you look back at Figure 3-1,
you can see that we need to add two buttons and a label to this
view.
Beginning iOS 7 Development: Exploring the iOS SDK
Reprinted for ZU7S5/5738005, American Public University
System Apress, Jack Nutting, Fredrik Olsson, David Mark, and
Jeff LaMarche (c) 2014, Copying Prohibited
Page 5 of 16
Figure 3-4: Main.storyboard open for editing in Xcode's
Interface Builder
Let's take a second to think about our application. We're going
to add two buttons and a label to our user interface, and that
process is very similar to what we did in the
previous chapter. However, we're also going to need outlets and
actions to make our application interactive.
The buttons will need to each trigger an action method on our
controller. We could choose to make each button call a different
action method; but since they're going to
do essentially the same task (update the label's text), we will
need to call the same action method. We'll differentiate between
the two buttons using that sender argument
we discussed earlier in the section on actions. In addition to the
action method, we'll also need an outlet connected to the label,
so that we can change the text that the
label displays.
Let's add the buttons first and then place the label. We'll create
the corresponding actions and outlets as we design our
interface. We could also manually declare our
actions and outlets and then connect our user interface items to
them, but why do extra work when Xcode will do it for us?
Adding the Buttons and Action Method
Our first order of business is to add two buttons to our user
interface. We'll then have Xcode create an empty action method
for us, and we can connect both buttons to
that action method. This will cause the buttons, when tapped by
the user, to call that action method. Any code we place in that
action method will be executed when the
user taps the button.
Select View Utilities Show Object Library or press to open
the object library. Type UIButton into the object library's search
box (you actually need to
type only the first four characters, UIBu, to narrow down the
list). Once you're finished typing, only one item should appear
in the object library: Button (see Figure 3-5).
Figure 3-5: The Button as it appears in the object library
Beginning iOS 7 Development: Exploring the iOS SDK
Reprinted for ZU7S5/5738005, American Public University
System Apress, Jack Nutting, Fredrik Olsson, David Mark, and
Jeff LaMarche (c) 2014, Copying Prohibited
Page 6 of 16
Drag Button from the library and drop it on the white window
inside the editing area. This will add a button to your
application's view. Place the button along the left side
of the view the appropriate distance from the left edge by using
the blue guidelines that appear to place it. For vertical
placement, use the blue guidelines to place the
button halfway down in the view. You can use Figure 3-1 as a
placement guide, if that helps.
Note The little, blue guidelines that appear as you move objects
around in Interface Builder are there to help you stick to the
iOS Human Interface Guidelines (usually referred to as the
HIG). Apple
provides the HIG for people designing iPhone and iPad
applications. The HIG tells you how you should—and
shouldn't—design your user interface. You really should read it
because it
contains valuable information that every iOS developer needs to
know. You'll find it at
http://developer.apple.com/library/ios/documentation/
UserExperience/Conceptual/MobileHIG/.
Double-click the newly added button. This will allow you to
edit the button's title. Give this button a title of Left.
Now, it's time for some Xcode magic. Select View Assistant
Editor Show Assistant Editor, or press to open the assistant
editor. You can also show and
hide the assistant editor by clicking the middle editor button in
the collection of seven buttons on the upper-right side of the
project window (see Figure 3-6).
Figure 3-6: The Show the Assistant editor toggle button
Unless you specifically request otherwise (see the options in the
Assistant Editor menu), the assistant editor will appear to the
right of the editing pane. The left side will
continue to show Interface Builder, but the right will display
either BIDViewController.h or BIDViewController.m, which are
the header and implementation files for the
view controller that "owns" the view you're looking at.
Tip After opening the assistant editor, you may need to resize
your window to have enough room to work. If you're on a
smaller screen, like the one on a MacBook Air, you might need
to close the
utility view and/or project navigator to give yourself enough
room to use the assistant editor effectively. You can do this
easily using the three view buttons in the upper right of the
project window
(see Figure 3-6).
Remember the View Controller icon we discussed in the
previous chapter? This is the same thing all over again. Xcode
knows that our view controller class is
responsible for displaying this view, and so the assistant editor
knows to show us the header and/or implementation of the view
controller class, which are the most likely
places we'll want to create to connect actions and outlets.
As you saw earlier, there's really not much in the
BIDViewController class. It's just an empty UIViewController
subclass. But it won't be an empty subclass for long!
We're now going to ask Xcode to automatically create a new
action method for us and associate that action with the button
we just created. We're going to add these
definitions to the header file. If that's not currently shown in the
assistant view, use the jump bar above it to select
BIDViewController.h.
To do this, begin by clicking your new button so it is selected.
Now, hold down the control key on your keyboard, and then
click-and-drag from the button over to the
source code in the assistant editor. You should see a blue line
running from the button to your cursor (see Figure 3-7). This
blue line is how we connect objects in IB to
code or other objects.
Beginning iOS 7 Development: Exploring the iOS SDK
Reprinted for ZU7S5/5738005, American Public University
System Apress, Jack Nutting, Fredrik Olsson, David Mark, and
Jeff LaMarche (c) 2014, Copying Prohibited
Page 7 of 16
Figure 3-7: Control-dragging to source code will give you the
option to create an outlet, action, or outlet collection
Tip You can drag that blue line to anything you want to connect
to your button: to the header file in the assistant editor, to the
File's Owner icon, to any of the other icons on the left side of
the editing
pane, or even to other objects in the editing area.
If you move your cursor so it's between the @interface and
@end keywords (see Figure 3-7), a gray box will appear, letting
you know that releasing the mouse button will
insert an outlet, an action, or an outlet collection for you.
Note We use actions and outlets in this book, but we do not use
outlet collections. Outlet collections allow you to connect
multiple objects of the same kind to a single NSArray property,
rather than
creating a separate property for each object.
To finish this connection, release your mouse button, and a
floating pop-up will appear, like the one shown in Figure 3-8.
This window lets you customize your new
action. In the window, click the pop-up menu labeled
Connection and change the selection from Outlet to Action. This
tells Xcode that we want to create an action
instead of an outlet.
Figure 3-8: The floating pop-up that appears after you control-
drag to source code
The pop-up will change to look like Figure 3-9. In the Name
field, type buttonPressed. When you're finished, do not hit the
Return key. Pressing Return would finalize
our outlet, and we're not quite ready to do that. Instead, press
the Tab key to move to the Type field and type in UIButton,
replacing the default value of id.
Beginning iOS 7 Development: Exploring the iOS SDK
Reprinted for ZU7S5/5738005, American Public University
System Apress, Jack Nutting, Fredrik Olsson, David Mark, and
Jeff LaMarche (c) 2014, Copying Prohibited
Page 8 of 16
Figure 3-9: Changing the connection type to Action changes the
appearance of the pop-up
Note As you probably remember, an id is a generic pointer that
can point to any Objective-C object. We could leave this as id,
and it would work fine; but if we change it to the class we
expect to
call the method, the compiler can warn us if we try to do this
from the wrong type of object. There are times when you'll want
the flexibility to be able to call the same action method from
different types of controls; and in those cases, you would want
to leave this set to id. In our case, we're only going to call this
method from buttons, so we're letting Xcode and LLVM know
that.
Now, it can warn us if we unintentionally try to connect
something else to it.
There are two fields below Type, which we will leave at their
default values. The Event field lets you specify when the
method is called. The default value of Touch Up
Inside fires when the user lifts a finger off the screen if—and
only if—the finger is still on the button. This is the standard
event to use for buttons. This gives the user a
chance to reconsider. If the user moves a finger off the button
before lifting it off the screen, the method won't fire.
The Arguments field lets you choose between the three different
method signatures that can be used for action methods. We want
the sender argument, so that we can
tell which button called the method. That's the default, so we
just leave it as is.
Hit the Return key or click the Connect button, and Xcode will
insert the action method for you. Your BIDViewController.h
file should now look like this:
#import <UIKit/UIKit.h>
@interface BIDViewController : UIViewController
- (IBAction)buttonPressed:(UIButton *)sender;
@end
Xcode has now added a method declaration to your class's
header file for you. Use the jump bar above the assistant editor
to switch over to BIDViewController.m, and
you'll see that it has also added a method stub for you.
- (IBAction)buttonPressed:(UIButton *)sender {
}
In a few moments, we'll come back here to write the code that
needs to run when the user taps either button. In addition to
creating the method declaration and
implementation, Xcode has also connected that button to this
action method and stored that information in the storyboard.
That means we don't need to do anything else
to make that button call this method when our application runs.
Go back to Main.storyboard and drag out another button, this
time placing the button on the right side of the screen. After
placing it, double-click it and change its name
to Right. The blue lines will pop up to help you align it with the
right margin, as you saw before, and they will also help you
align the button vertically with the other
button.
Tip Instead of dragging a new object out from the library, you
could hold down the inline key (the Option key) and drag the
original object (the Left button in this example) over. Holding
down the
key tells Interface Builder to drag out a copy of the original
object.
This time, we don't want to create a new action method. Instead,
we want to connect …
Dick’s Sporting Goods
Manami Maehama
Professor Martin
Horizontal & Vertical Analysis
Balance Sheet
Cash & Short Term Investments
Cash and Short Term investments is the sum of two balance
sheet line items: cash
and equivalents and short term investments in marketable
securities.
3 ways to improve:
1. Lease, Don’t Buy.
2. Offer Discounts on Loans
3. Conduct Customer Credit Checks
Assets Horizontal
2016 2017 2018 2019 2020 2021
119M (39%) 165M (-39%) 101M (13%) 114M (-39%) 70M (-
6.5%) 69M
Total Accounts Receivable
Total Accounts receivable is the balance of money due to a firm
for goods or
services delivered or used but not yet paid for by customers.
3 ways to improve :
1. Move fast on past-due receivables.
2. Consider offering an early payment discount
3. Consider offering a payment plan
ASSET Horizontal
2016 2017 2018 2019 2020 2021
67M (16%) 78M (-17%) 65M (-32%) 44M (34%) 59M (0.25%)
59M
Inventories
Inventory is the term for the goods available for sale and raw
materials used to
produce goods available for sale.
3 ways to improve :
1. Avoid dead stock.
2. Save on storage costs
3. Regular auditing
ASSET Horizontal
2016 2017 2018 2019 2020 2021
2B (0%) 2B (0%) 2B (0%) 2B (0%) 2B (0%) 2B
Total Current Assets
Total current assets represent all the assets of a company that
are expected to be conveniently
sold, consumed, utilized or exhausted through the standard
business operations, which can lead to
their conversion to a cash value over the next one year period.
3 ways to improve :
1. Pay off Current Liabilities.
2. Sell-off Unproductive Assets.
3. Improve Current Asset by Rising Shareholders Funds
ASSET Horizontal
2016 2017 2018 2019 2020 2021
2B (0%) 2B (0%) 2B (0%) 2B (0%) 2B (0%) 2B
Net Property, Plant & Equipment
Net Property, Plant, and Equipment is the value of all buildings,
land, furniture, and
other physical capital that a business has purchased to run its
business.
3 ways to improve :
1. Ins and outs of depreciation
2. Use an accelerated method that takes most most of the
depreciation up front
3. Subtract depreciation over time
ASSET Horizontal
2016 2017 2018 2019 2020 2021
1B (100%) 2B (0%) 2B (0%) 2B (100%) 4B (50%) 5B
Intangible Assets
An intangible asset is an asset that is not physical in nature.
3 ways to improve:
1. Identify Your Intangible Asset
2. Standardize Systems and Processes
3. Develop Your Intangibles
ASSET Horizontal
2016 2017 2018 2019 2020 2021
310M (24%) 385M (0.5%) 387M (-2%) 380M (-10%) 340M
(3%) 340M
Net Goodwill
Goodwill is an intangible asset that is associated with the
purchase of one
company by another.
3 ways to improve:
1. Cash-Flow Statement Basics
2. Investing Cash Flow
3. Financing Cash Flow
ASSET Horizontal
2016 2017 2018 2019 2020 2021
200M (23%) 245M (2%) 250M (0%) 250M (-2%) 245M (6%)
245M
Other Assets
Other assets are a grouping of accounts that are listed as a
separate line item in
the assets section of the balance sheet.
3 ways to improve:
1. Find new sources of income
2. Get out of debt
3. Spend less
ASSET Horizontal
2016 2017 2018 2019 2020 2021
83M (30%) 108M (11%) 120M (-12%) 106M (26%) 134M
(14%) 152M
Tangible Other Assets
Tangible assets include both fixed assets, such as machinery,
buildings and land, and
current assets, such as inventory.
3 ways to improve:
1. A high net tangible assets value can serve as a cushion
against uncertainty that can
take place in the market and help to support a company’s stock
price.
2. Determining this value helps to find out if the market share
price of a company is
overvalued or undervalued.
3. As tangible current assets can easily be converted into cash,
they provide liquidity to
the business and, thus, reduce risk
ASSET Horizontal
2016 2017 2018 2019 2020 2021
83M (30%) 108M (11%) 120M (-12%) 106M (26%) 134M
(14%) 152M
Total Assets
Total assets refers to the total amount of assets owned by a
person or entity.
3 ways to improve:
1. Reduce asset base
2. Improve Productivity And Lower Costs
3. Increase Sales Revenue
ASSET Horizontal
2016 2017 2018 2019 2020 2021
4B (0%) 4B(0%) 4B(0%) 4B(75%) 7B(19%) 8B
Total Accounts Receivable & Inventories
ASSET Vertical
2016 2017 2018 2019 2020 2021
67M (2%) 78M (2%) 65M (2%) 44M (1%) 59M (1%) 2%
Total Assets
2016 2017 2018 2019 2020
4B 4B 4B 4B 7B
2016 2017 2018 2019 2020 2021
2B (50%) 2B (50%) 2B (50%) 2B (50%) 2B (29%) 49%
Total Accounts
Receivable
Inventories
Cash & short term investments & Total current assets
ASSET Vertical
2016 2017 2018 2019 2020 2021
119M (3%) 165M
(4%)
101M
(3%)
114M
(3%)
70M (1%) (3%)
Total Assets
2016 2017 2018 2019 2020
4B 4B 4B 4B 7B
2016 2017 2018 2019 2020 2021
2B (50%) 2B (50%) 2B (50%) 2B (50%) 2B (29%) (49%)
Cash & short
term
investments
Total current
assets
Net Property, Plant & Equipment & Intangible Assets
ASSET Vertical
2016 2017 2018 2019 2020 2021
1B (25%) 2B (50%) 2B (50%) 2B (50%) 4B (57%) (46%)
Total Assets
2016 2017 2018 2019 2020
4B 4B 4B 4B 7B
2016 2017 2018 2019 2020 2021
310M (8%) 385M
(10%)
387M
(10%)
380M
(10%)
340M (5%) (9%)
Net Property,
Plant &
Equipment
Intangible
Assets
Net Goodwill & Other Assets
ASSET Vertical
2016 2017 2018 2019 2020 2021
200M (5%) 245M
(6%)
250M
(6%)
250M
(6%)
245M (4%) 5%
Total Assets
2016 2017 2018 2019 2020
4B 4B 4B 4B 7B
2016 2017 2018 2019 2020 2021
83M (2%) 108M (3%) 120M (3%) 106M (3%) 134M (2%) 3%
Net Goodwill
Other Assets
Tangible Other Assets
ASSET Vertical
2016 2017 2018 2019 2020 2021
83M (2%) 108M
(3%)
120M
(3%)
106M
(3%)
134M (2%) 3%
Total Assets
2016 2017 2018 2019 2020
4B 4B 4B 4B 7B
Tangible Other
Assets
ST Debt & Current Portion LT Debt
The current portion of long-term debt is the amount of principal
that will be due within one year of
the date of the balance sheet. This amount is reported on the
balance sheet as one of the
company's current liabilities.
3 ways to improve:
1. A company can keep its long-term debt from ever being
classified as a current liability by
periodically rolling forward the debt into instruments with
longer maturity dates and balloon
payments.
2. Pay debts back on time
3. Stop creating more debt
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
589,000
(10%)
646,000
(67%)
5M (0%) 5M (83%) 423M (40%) 592M
Accounts Payable
Money owed by a company to its creditors.
3 ways to improve:
1. Go paperless when possible
2. Look for discounts
3. Standardize your accounts payable workflow process
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
678M (12%) 756M (12%) 843M (6%) 890M (12%) 1B (11%)
110M
Income Tax Payable
Income tax payable is a type of account in the current liabilities
section of a
company's balance sheet. It is compiled of taxes due to the
government within one
year.
3 ways to improve:
1. Open an interest-bearing bank account
2. Skip some of the credits for which you are eligible
3. Accelerate advanced payments in the current year instead of
delaying
payment until the next tax year.
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
68M (26%) 86M (-60%) 34M (15%) 39M (-74%) 10M (-93%)
700,000
Other Current Liabilities
Other Current Liabilities are categories of short-term debt that
are lumped together
on the balance sheet.
3 ways to improve: to reduce
1. Sell unnecessary assets
2. Factor invoices
3. Use investments or cash to pay off loans
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
445M (25%) 555M (-2%) 543M (5%) 570M (13%) 641M (10%)
705M
Miscellaneous Current Liabilities
Miscellaneous Current Liabilities is an account for current
liabilities that do not fall
into any of the categories already defined.
3 ways to improve: to reduce
1. Reduce costs
2. Increase income
3. Restructure liabilities
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
350M (19%) 418M
(-0.2%)
417M (-3%) 405M (58%) 641M (18%) 756M
Total Current Liabilities
Total Current Liabilities are the claims to the company's assets
that are due within
one year or the cycle of operations.
3 ways to improve:
1. Restructure assets
2. Raise more capital
3. Exit the business
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
1B (0%) 1B (0%) 1B (100%) 2B (0%) 2B (25%) 2.5B
Long Term Debt
Long Term Debt is any amount of outstanding debt a company
holds that has a
maturity of 12 months or longer.
3 ways to improve: to reduce
1. Increase profitable sales
2. Sell assets and lease them back
3. Bring in an investor
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
5M(0%) 5M (1100%) 60M (-8%) 55M
(5355%)
3B (1612%) 51B
Deferred Taxes-Debit
Corporate bookkeepers debit an asset account to increase its
value and credit the
account to reduce its worth.
3 ways to improve:
1. Try to stop losses from operations
2. Pay the taxes
3. Use the straight line method
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
6M(667%) 46M (-67%) 14M (-7%) 13M (8%) 14M (150%) 35M
Other Liabilities
Other Liabilities are all miscellaneous obligations that a
company lumps together
on financial statements.
3 ways to improve:
1. Sell unnecessary assets
2. Convert necessary assets into liabilities
3. Factor invoices
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
175M (11%) 195M (9%) 213M (-5%) 203M(-34%) 134M (-5%)
127M
Total Liabilities
Total liabilities are the aggregate debt and financial obligations
owed by a
business to individuals and organizations at any specific period
of time.
3 ways to improve:
1. Rework your business budget
2. Reduce business expenses
3. Increase customer sales
Liabilities Horizontal
2016 2017 2018 2019 2020 2021
2B (0%) 2B (-0%) 2B(0%) 2B(150%) 5B(38%) 7B
ST Debt & Current Portion LT Debt & Accounts Payable
Liabilities Vertical
2016 2017 2018 2019 2020 2021
589,000
(0.1%)
646,000
(0.1%)
5M (0.3%) 5M (0.3%) 423M (8%) 2%
Total Liabilities
2016 2017 2018 2019 2020
2B 2B 2B 2B 5B
2016 2017 2018 2019 2020 2021
678M (34%) 756M (38%) 843M (42%) 890M (45%) 1B (20%)
36%
ST Debt &
Current Portion
LT Debt
Accounts
Payable
Income Tax Payable & Other Current Liabilities
Liabilities Vertical
2016 2017 2018 2019 2020 2021
68M (3%) 86M (4%) 34M (2%) 39M (2%) 10M (0.2%) 2%
Total Liabilities
2016 2017 2018 2019 2020
2B 2B 2B 2B 5B
2016 2017 2018 2019 2020 2021
445M (22%) 555M (28%) 543M (27%) 570M (29%) 641M
(13%) 24%
Income Tax
Payable
Other current
liabilities
Miscellaneous Current Liabilities & Total Current Liabilities
Liabilities Vertical
2016 2017 2018 2019 2020 2021
350M (18%) 418M (21%) 417M (21%) 405M (20%) 641M
(13%) 19%
Total Liabilities
2016 2017 2018 2019 2020
2B 2B 2B 2B 5B
2016 2017 2018 2019 2020 2021
1B (50%) 1B (50%) 1B (50%) 2B (100%) 2B (40%) 58%
Miscellaneous
Current
Liablilities
Total Current
Liabilities
Long Term Debt & Deferred Taxes-Debit
Liabilities Vertical
2016 2017 2018 2019 2020 2021
5M(0.3%) 5M (0.3%) 60M (3%) 55M (3%) 3B (60%) 13%
Total Liabilities
2016 2017 2018 2019 2020
2B 2B 2B 2B 5B
2016 2017 2018 2019 2020 2021
6M(0.3%) 46M (2%) 14M (0.7%) 13M (0.7%) 14M (0.3%) 0.8%
Long Term Debt
Deferred
Taxes-Debit
Other Liabilities
Liabilities Vertical
2016 2017 2018 2019 2020 2021
175M (9%) 195M (10%) 213M (11%) 203M(10%) 134M (3%)
9%
Total Liabilities
2016 2017 2018 2019 2020
2B 2B 2B 2B 5B
Other Liabilities

More Related Content

Similar to Dick’s Sporting Goods Manami MaehamaProfessor Martin.docx

Extra Credit Assignment, Econ 140 (3)Choose any topic discussed.docx
Extra Credit Assignment, Econ 140 (3)Choose any topic discussed.docxExtra Credit Assignment, Econ 140 (3)Choose any topic discussed.docx
Extra Credit Assignment, Econ 140 (3)Choose any topic discussed.docx
nealwaters20034
 

Similar to Dick’s Sporting Goods Manami MaehamaProfessor Martin.docx (20)

sliver river mfg slide
sliver river mfg slide sliver river mfg slide
sliver river mfg slide
 
Financial analysis of TATA TELESERVICES LTD
Financial analysis of TATA TELESERVICES LTDFinancial analysis of TATA TELESERVICES LTD
Financial analysis of TATA TELESERVICES LTD
 
153 q hci_eng
153 q hci_eng153 q hci_eng
153 q hci_eng
 
hitejinroholdings 000140 Algorithm Investment Report
hitejinroholdings 000140 Algorithm Investment Reporthitejinroholdings 000140 Algorithm Investment Report
hitejinroholdings 000140 Algorithm Investment Report
 
Analysis of financial statement reliance industries
Analysis of financial statement reliance industriesAnalysis of financial statement reliance industries
Analysis of financial statement reliance industries
 
Capital expenditure
Capital expenditureCapital expenditure
Capital expenditure
 
Financial Ratio Breakdown of Waste Management
Financial Ratio Breakdown of Waste ManagementFinancial Ratio Breakdown of Waste Management
Financial Ratio Breakdown of Waste Management
 
Britannia Industries Ltd. - Fundamental Analysis
Britannia Industries Ltd. - Fundamental Analysis Britannia Industries Ltd. - Fundamental Analysis
Britannia Industries Ltd. - Fundamental Analysis
 
cj logistics 000120 Algorithm Investment Report
cj logistics 000120 Algorithm Investment Reportcj logistics 000120 Algorithm Investment Report
cj logistics 000120 Algorithm Investment Report
 
Class 12 Accountancy Project CBSE 2020 (Ratios, Cash Flow Statement, Segment ...
Class 12 Accountancy Project CBSE 2020 (Ratios, Cash Flow Statement, Segment ...Class 12 Accountancy Project CBSE 2020 (Ratios, Cash Flow Statement, Segment ...
Class 12 Accountancy Project CBSE 2020 (Ratios, Cash Flow Statement, Segment ...
 
Extra Credit Assignment, Econ 140 (3)Choose any topic discussed.docx
Extra Credit Assignment, Econ 140 (3)Choose any topic discussed.docxExtra Credit Assignment, Econ 140 (3)Choose any topic discussed.docx
Extra Credit Assignment, Econ 140 (3)Choose any topic discussed.docx
 
dreamtech 192650 Algorithm Investment Report
dreamtech 192650 Algorithm Investment Reportdreamtech 192650 Algorithm Investment Report
dreamtech 192650 Algorithm Investment Report
 
sk bioland 052260 Algorithm Investment Report
sk bioland 052260 Algorithm Investment Reportsk bioland 052260 Algorithm Investment Report
sk bioland 052260 Algorithm Investment Report
 
Startup Valuation - Hervé Lebret 2020
Startup Valuation - Hervé Lebret 2020Startup Valuation - Hervé Lebret 2020
Startup Valuation - Hervé Lebret 2020
 
TEA FN A 7.2 FM Trident Ltd..pptx
TEA FN A 7.2 FM Trident Ltd..pptxTEA FN A 7.2 FM Trident Ltd..pptx
TEA FN A 7.2 FM Trident Ltd..pptx
 
TSR Oppday60Q1 30/5/2017
TSR Oppday60Q1 30/5/2017TSR Oppday60Q1 30/5/2017
TSR Oppday60Q1 30/5/2017
 
Accounts- Trend Analysis
Accounts- Trend AnalysisAccounts- Trend Analysis
Accounts- Trend Analysis
 
Session 9 - Financial Statement Analysis (1) (1).pptx
Session 9 - Financial Statement Analysis (1) (1).pptxSession 9 - Financial Statement Analysis (1) (1).pptx
Session 9 - Financial Statement Analysis (1) (1).pptx
 
nanoentek 039860 Algorithm Investment Report
nanoentek 039860 Algorithm Investment Reportnanoentek 039860 Algorithm Investment Report
nanoentek 039860 Algorithm Investment Report
 
Management Accounting - Comparative Balance Sheet
Management Accounting - Comparative Balance SheetManagement Accounting - Comparative Balance Sheet
Management Accounting - Comparative Balance Sheet
 

More from adkinspaige22

. Read the Harvard Business Review article  Link3. View this ve.docx
. Read the Harvard Business Review article  Link3. View this ve.docx. Read the Harvard Business Review article  Link3. View this ve.docx
. Read the Harvard Business Review article  Link3. View this ve.docx
adkinspaige22
 
.  Record your initial reaction to the work (suggested length of 1.docx
.  Record your initial reaction to the work (suggested length of 1.docx.  Record your initial reaction to the work (suggested length of 1.docx
.  Record your initial reaction to the work (suggested length of 1.docx
adkinspaige22
 
-TOPIC= Civil Right Movement and Black Power Movement#St.docx
-TOPIC= Civil Right Movement and Black Power Movement#St.docx-TOPIC= Civil Right Movement and Black Power Movement#St.docx
-TOPIC= Civil Right Movement and Black Power Movement#St.docx
adkinspaige22
 
- Wordcount 500 to 1000 words- Structure Cover, Table of Conte.docx
- Wordcount 500 to 1000 words- Structure Cover, Table of Conte.docx- Wordcount 500 to 1000 words- Structure Cover, Table of Conte.docx
- Wordcount 500 to 1000 words- Structure Cover, Table of Conte.docx
adkinspaige22
 
- Briefly summarize the Modernization Theory (discuss all four stage.docx
- Briefly summarize the Modernization Theory (discuss all four stage.docx- Briefly summarize the Modernization Theory (discuss all four stage.docx
- Briefly summarize the Modernization Theory (discuss all four stage.docx
adkinspaige22
 
+16159390825Whats app the test online on time .docx
+16159390825Whats app the test online on time .docx+16159390825Whats app the test online on time .docx
+16159390825Whats app the test online on time .docx
adkinspaige22
 

More from adkinspaige22 (20)

. Review the three articles about Inflation that are found below thi.docx
. Review the three articles about Inflation that are found below thi.docx. Review the three articles about Inflation that are found below thi.docx
. Review the three articles about Inflation that are found below thi.docx
 
.         Find an invertebrate that is endemic to Florida. Endem.docx
.         Find an invertebrate that is endemic to Florida. Endem.docx.         Find an invertebrate that is endemic to Florida. Endem.docx
.         Find an invertebrate that is endemic to Florida. Endem.docx
 
. Read the Harvard Business Review article  Link3. View this ve.docx
. Read the Harvard Business Review article  Link3. View this ve.docx. Read the Harvard Business Review article  Link3. View this ve.docx
. Read the Harvard Business Review article  Link3. View this ve.docx
 
. Go to a news site and look at the headlines of several articles. A.docx
. Go to a news site and look at the headlines of several articles. A.docx. Go to a news site and look at the headlines of several articles. A.docx
. Go to a news site and look at the headlines of several articles. A.docx
 
-Describe the Plessy v. Ferguson Supreme Court Case of 1896; how was.docx
-Describe the Plessy v. Ferguson Supreme Court Case of 1896; how was.docx-Describe the Plessy v. Ferguson Supreme Court Case of 1896; how was.docx
-Describe the Plessy v. Ferguson Supreme Court Case of 1896; how was.docx
 
-Do the schedule with Activity on Node and also draw the schedule.docx
-Do the schedule with Activity on Node and also draw the schedule.docx-Do the schedule with Activity on Node and also draw the schedule.docx
-Do the schedule with Activity on Node and also draw the schedule.docx
 
.  Record your initial reaction to the work (suggested length of 1.docx
.  Record your initial reaction to the work (suggested length of 1.docx.  Record your initial reaction to the work (suggested length of 1.docx
.  Record your initial reaction to the work (suggested length of 1.docx
 
-Describe the existing needs for cost information in healthcare firm.docx
-Describe the existing needs for cost information in healthcare firm.docx-Describe the existing needs for cost information in healthcare firm.docx
-Describe the existing needs for cost information in healthcare firm.docx
 
--------250 words---------Chapter 18 – According to literatu.docx
--------250 words---------Chapter 18 – According to literatu.docx--------250 words---------Chapter 18 – According to literatu.docx
--------250 words---------Chapter 18 – According to literatu.docx
 
-Please name the functions of the skeletal system.2-Where are lo.docx
-Please name the functions of the skeletal system.2-Where are lo.docx-Please name the functions of the skeletal system.2-Where are lo.docx
-Please name the functions of the skeletal system.2-Where are lo.docx
 
-TOPIC= Civil Right Movement and Black Power Movement#St.docx
-TOPIC= Civil Right Movement and Black Power Movement#St.docx-TOPIC= Civil Right Movement and Black Power Movement#St.docx
-TOPIC= Civil Right Movement and Black Power Movement#St.docx
 
- Wordcount 500 to 1000 words- Structure Cover, Table of Conte.docx
- Wordcount 500 to 1000 words- Structure Cover, Table of Conte.docx- Wordcount 500 to 1000 words- Structure Cover, Table of Conte.docx
- Wordcount 500 to 1000 words- Structure Cover, Table of Conte.docx
 
-What benefits can a diverse workforce provide to an organization.docx
-What benefits can a diverse workforce provide to an organization.docx-What benefits can a diverse workforce provide to an organization.docx
-What benefits can a diverse workforce provide to an organization.docx
 
-How would you define or describe the American Great Migration m.docx
-How would you define or describe the American Great Migration m.docx-How would you define or describe the American Great Migration m.docx
-How would you define or describe the American Great Migration m.docx
 
- We learned from our readings that the use of mobile devices in our.docx
- We learned from our readings that the use of mobile devices in our.docx- We learned from our readings that the use of mobile devices in our.docx
- We learned from our readings that the use of mobile devices in our.docx
 
- Goals (short and long term) and how you developed them; experience.docx
- Goals (short and long term) and how you developed them; experience.docx- Goals (short and long term) and how you developed them; experience.docx
- Goals (short and long term) and how you developed them; experience.docx
 
- Pick ONE Theme for the 5 short stories (ex setting, character.docx
- Pick ONE Theme for the 5 short stories (ex setting, character.docx- Pick ONE Theme for the 5 short stories (ex setting, character.docx
- Pick ONE Theme for the 5 short stories (ex setting, character.docx
 
- Briefly summarize the Modernization Theory (discuss all four stage.docx
- Briefly summarize the Modernization Theory (discuss all four stage.docx- Briefly summarize the Modernization Theory (discuss all four stage.docx
- Briefly summarize the Modernization Theory (discuss all four stage.docx
 
+16159390825Whats app the test online on time .docx
+16159390825Whats app the test online on time .docx+16159390825Whats app the test online on time .docx
+16159390825Whats app the test online on time .docx
 
(philosophy1. why is mills philosophy closely identified with.docx
(philosophy1. why is mills philosophy closely identified with.docx(philosophy1. why is mills philosophy closely identified with.docx
(philosophy1. why is mills philosophy closely identified with.docx
 

Recently uploaded

The basics of sentences session 4pptx.pptx
The basics of sentences session 4pptx.pptxThe basics of sentences session 4pptx.pptx
The basics of sentences session 4pptx.pptx
heathfieldcps1
 
Poster_density_driven_with_fracture_MLMC.pdf
Poster_density_driven_with_fracture_MLMC.pdfPoster_density_driven_with_fracture_MLMC.pdf
Poster_density_driven_with_fracture_MLMC.pdf
Alexander Litvinenko
 

Recently uploaded (20)

Envelope of Discrepancy in Orthodontics: Enhancing Precision in Treatment
 Envelope of Discrepancy in Orthodontics: Enhancing Precision in Treatment Envelope of Discrepancy in Orthodontics: Enhancing Precision in Treatment
Envelope of Discrepancy in Orthodontics: Enhancing Precision in Treatment
 
The Ball Poem- John Berryman_20240518_001617_0000.pptx
The Ball Poem- John Berryman_20240518_001617_0000.pptxThe Ball Poem- John Berryman_20240518_001617_0000.pptx
The Ball Poem- John Berryman_20240518_001617_0000.pptx
 
philosophy and it's principles based on the life
philosophy and it's principles based on the lifephilosophy and it's principles based on the life
philosophy and it's principles based on the life
 
PSYPACT- Practicing Over State Lines May 2024.pptx
PSYPACT- Practicing Over State Lines May 2024.pptxPSYPACT- Practicing Over State Lines May 2024.pptx
PSYPACT- Practicing Over State Lines May 2024.pptx
 
The basics of sentences session 4pptx.pptx
The basics of sentences session 4pptx.pptxThe basics of sentences session 4pptx.pptx
The basics of sentences session 4pptx.pptx
 
Implanted Devices - VP Shunts: EMGuidewire's Radiology Reading Room
Implanted Devices - VP Shunts: EMGuidewire's Radiology Reading RoomImplanted Devices - VP Shunts: EMGuidewire's Radiology Reading Room
Implanted Devices - VP Shunts: EMGuidewire's Radiology Reading Room
 
IPL Online Quiz by Pragya; Question Set.
IPL Online Quiz by Pragya; Question Set.IPL Online Quiz by Pragya; Question Set.
IPL Online Quiz by Pragya; Question Set.
 
Stl Algorithms in C++ jjjjjjjjjjjjjjjjjj
Stl Algorithms in C++ jjjjjjjjjjjjjjjjjjStl Algorithms in C++ jjjjjjjjjjjjjjjjjj
Stl Algorithms in C++ jjjjjjjjjjjjjjjjjj
 
24 ĐỀ THAM KHẢO KÌ THI TUYỂN SINH VÀO LỚP 10 MÔN TIẾNG ANH SỞ GIÁO DỤC HẢI DƯ...
24 ĐỀ THAM KHẢO KÌ THI TUYỂN SINH VÀO LỚP 10 MÔN TIẾNG ANH SỞ GIÁO DỤC HẢI DƯ...24 ĐỀ THAM KHẢO KÌ THI TUYỂN SINH VÀO LỚP 10 MÔN TIẾNG ANH SỞ GIÁO DỤC HẢI DƯ...
24 ĐỀ THAM KHẢO KÌ THI TUYỂN SINH VÀO LỚP 10 MÔN TIẾNG ANH SỞ GIÁO DỤC HẢI DƯ...
 
Poster_density_driven_with_fracture_MLMC.pdf
Poster_density_driven_with_fracture_MLMC.pdfPoster_density_driven_with_fracture_MLMC.pdf
Poster_density_driven_with_fracture_MLMC.pdf
 
MOOD STABLIZERS DRUGS.pptx
MOOD     STABLIZERS           DRUGS.pptxMOOD     STABLIZERS           DRUGS.pptx
MOOD STABLIZERS DRUGS.pptx
 
ĐỀ THAM KHẢO KÌ THI TUYỂN SINH VÀO LỚP 10 MÔN TIẾNG ANH FORM 50 CÂU TRẮC NGHI...
ĐỀ THAM KHẢO KÌ THI TUYỂN SINH VÀO LỚP 10 MÔN TIẾNG ANH FORM 50 CÂU TRẮC NGHI...ĐỀ THAM KHẢO KÌ THI TUYỂN SINH VÀO LỚP 10 MÔN TIẾNG ANH FORM 50 CÂU TRẮC NGHI...
ĐỀ THAM KHẢO KÌ THI TUYỂN SINH VÀO LỚP 10 MÔN TIẾNG ANH FORM 50 CÂU TRẮC NGHI...
 
diagnosting testing bsc 2nd sem.pptx....
diagnosting testing bsc 2nd sem.pptx....diagnosting testing bsc 2nd sem.pptx....
diagnosting testing bsc 2nd sem.pptx....
 
II BIOSENSOR PRINCIPLE APPLICATIONS AND WORKING II
II BIOSENSOR PRINCIPLE APPLICATIONS AND WORKING IIII BIOSENSOR PRINCIPLE APPLICATIONS AND WORKING II
II BIOSENSOR PRINCIPLE APPLICATIONS AND WORKING II
 
UChicago CMSC 23320 - The Best Commit Messages of 2024
UChicago CMSC 23320 - The Best Commit Messages of 2024UChicago CMSC 23320 - The Best Commit Messages of 2024
UChicago CMSC 23320 - The Best Commit Messages of 2024
 
ANTI PARKISON DRUGS.pptx
ANTI         PARKISON          DRUGS.pptxANTI         PARKISON          DRUGS.pptx
ANTI PARKISON DRUGS.pptx
 
Benefits and Challenges of OER by Shweta Babel.pptx
Benefits and Challenges of OER by Shweta Babel.pptxBenefits and Challenges of OER by Shweta Babel.pptx
Benefits and Challenges of OER by Shweta Babel.pptx
 
Sternal Fractures & Dislocations - EMGuidewire Radiology Reading Room
Sternal Fractures & Dislocations - EMGuidewire Radiology Reading RoomSternal Fractures & Dislocations - EMGuidewire Radiology Reading Room
Sternal Fractures & Dislocations - EMGuidewire Radiology Reading Room
 
Capitol Tech Univ Doctoral Presentation -May 2024
Capitol Tech Univ Doctoral Presentation -May 2024Capitol Tech Univ Doctoral Presentation -May 2024
Capitol Tech Univ Doctoral Presentation -May 2024
 
Improved Approval Flow in Odoo 17 Studio App
Improved Approval Flow in Odoo 17 Studio AppImproved Approval Flow in Odoo 17 Studio App
Improved Approval Flow in Odoo 17 Studio App
 

Dick’s Sporting Goods Manami MaehamaProfessor Martin.docx

  • 1. Dick’s Sporting Goods Manami Maehama Professor Martin Horizontal & Vertical Analysis Balance Sheet Cash & Short Term Investments Cash and Short Term investments is the sum of two balance sheet line items: cash and equivalents and short term investments in marketable securities. 3 ways to improve: 1. Lease, Don’t Buy. 2. Offer Discounts on Loans 3. Conduct Customer Credit Checks Assets Horizontal 2016 2017 2018 2019 2020 2021 119M (39%) 165M (-39%) 101M (13%) 114M (-39%) 70M (- 6.5%) 69M Total Accounts Receivable Total Accounts receivable is the balance of money due to a firm
  • 2. for goods or services delivered or used but not yet paid for by customers. 3 ways to improve : 1. Move fast on past-due receivables. 2. Consider offering an early payment discount 3. Consider offering a payment plan ASSET Horizontal 2016 2017 2018 2019 2020 2021 67M (16%) 78M (-17%) 65M (-32%) 44M (34%) 59M (0.25%) 59M Inventories Inventory is the term for the goods available for sale and raw materials used to produce goods available for sale. 3 ways to improve : 1. Avoid dead stock. 2. Save on storage costs 3. Regular auditing ASSET Horizontal 2016 2017 2018 2019 2020 2021 2B (0%) 2B (0%) 2B (0%) 2B (0%) 2B (0%) 2B
  • 3. Total Current Assets Total current assets represent all the assets of a company that are expected to be conveniently sold, consumed, utilized or exhausted through the standard business operations, which can lead to their conversion to a cash value over the next one year period. 3 ways to improve : 1. Pay off Current Liabilities. 2. Sell-off Unproductive Assets. 3. Improve Current Asset by Rising Shareholders Funds ASSET Horizontal 2016 2017 2018 2019 2020 2021 2B (0%) 2B (0%) 2B (0%) 2B (0%) 2B (0%) 2B Net Property, Plant & Equipment Net Property, Plant, and Equipment is the value of all buildings, land, furniture, and other physical capital that a business has purchased to run its business. 3 ways to improve : 1. Ins and outs of depreciation 2. Use an accelerated method that takes most most of the depreciation up front 3. Subtract depreciation over time ASSET Horizontal
  • 4. 2016 2017 2018 2019 2020 2021 1B (100%) 2B (0%) 2B (0%) 2B (100%) 4B (50%) 5B Intangible Assets An intangible asset is an asset that is not physical in nature. 3 ways to improve: 1. Identify Your Intangible Asset 2. Standardize Systems and Processes 3. Develop Your Intangibles ASSET Horizontal 2016 2017 2018 2019 2020 2021 310M (24%) 385M (0.5%) 387M (-2%) 380M (-10%) 340M (3%) 340M Net Goodwill Goodwill is an intangible asset that is associated with the purchase of one company by another. 3 ways to improve: 1. Cash-Flow Statement Basics 2. Investing Cash Flow 3. Financing Cash Flow
  • 5. ASSET Horizontal 2016 2017 2018 2019 2020 2021 200M (23%) 245M (2%) 250M (0%) 250M (-2%) 245M (6%) 245M Other Assets Other assets are a grouping of accounts that are listed as a separate line item in the assets section of the balance sheet. 3 ways to improve: 1. Find new sources of income 2. Get out of debt 3. Spend less ASSET Horizontal 2016 2017 2018 2019 2020 2021 83M (30%) 108M (11%) 120M (-12%) 106M (26%) 134M (14%) 152M Tangible Other Assets Tangible assets include both fixed assets, such as machinery, buildings and land, and current assets, such as inventory. 3 ways to improve:
  • 6. 1. A high net tangible assets value can serve as a cushion against uncertainty that can take place in the market and help to support a company’s stock price. 2. Determining this value helps to find out if the market share price of a company is overvalued or undervalued. 3. As tangible current assets can easily be converted into cash, they provide liquidity to the business and, thus, reduce risk ASSET Horizontal 2016 2017 2018 2019 2020 2021 83M (30%) 108M (11%) 120M (-12%) 106M (26%) 134M (14%) 152M Total Assets Total assets refers to the total amount of assets owned by a person or entity. 3 ways to improve: 1. Reduce asset base 2. Improve Productivity And Lower Costs 3. Increase Sales Revenue ASSET Horizontal 2016 2017 2018 2019 2020 2021
  • 7. 4B (0%) 4B(0%) 4B(0%) 4B(75%) 7B(19%) 8B Total Accounts Receivable & Inventories ASSET Vertical 2016 2017 2018 2019 2020 2021 67M (2%) 78M (2%) 65M (2%) 44M (1%) 59M (1%) 2% Total Assets 2016 2017 2018 2019 2020 4B 4B 4B 4B 7B 2016 2017 2018 2019 2020 2021 2B (50%) 2B (50%) 2B (50%) 2B (50%) 2B (29%) 49% Total Accounts Receivable Inventories Cash & short term investments & Total current assets ASSET Vertical 2016 2017 2018 2019 2020 2021 119M (3%) 165M (4%)
  • 8. 101M (3%) 114M (3%) 70M (1%) (3%) Total Assets 2016 2017 2018 2019 2020 4B 4B 4B 4B 7B 2016 2017 2018 2019 2020 2021 2B (50%) 2B (50%) 2B (50%) 2B (50%) 2B (29%) (49%) Cash & short term investments Total current assets Net Property, Plant & Equipment & Intangible Assets ASSET Vertical 2016 2017 2018 2019 2020 2021 1B (25%) 2B (50%) 2B (50%) 2B (50%) 4B (57%) (46%) Total Assets
  • 9. 2016 2017 2018 2019 2020 4B 4B 4B 4B 7B 2016 2017 2018 2019 2020 2021 310M (8%) 385M (10%) 387M (10%) 380M (10%) 340M (5%) (9%) Net Property, Plant & Equipment Intangible Assets Net Goodwill & Other Assets ASSET Vertical 2016 2017 2018 2019 2020 2021 200M (5%) 245M (6%) 250M (6%)
  • 10. 250M (6%) 245M (4%) 5% Total Assets 2016 2017 2018 2019 2020 4B 4B 4B 4B 7B 2016 2017 2018 2019 2020 2021 83M (2%) 108M (3%) 120M (3%) 106M (3%) 134M (2%) 3% Net Goodwill Other Assets Tangible Other Assets ASSET Vertical 2016 2017 2018 2019 2020 2021 83M (2%) 108M (3%) 120M (3%) 106M (3%)
  • 11. 134M (2%) 3% Total Assets 2016 2017 2018 2019 2020 4B 4B 4B 4B 7B Tangible Other Assets ST Debt & Current Portion LT Debt The current portion of long-term debt is the amount of principal that will be due within one year of the date of the balance sheet. This amount is reported on the balance sheet as one of the company's current liabilities. 3 ways to improve: 1. A company can keep its long-term debt from ever being classified as a current liability by periodically rolling forward the debt into instruments with longer maturity dates and balloon payments. 2. Pay debts back on time 3. Stop creating more debt Liabilities Horizontal 2016 2017 2018 2019 2020 2021 589,000 (10%)
  • 12. 646,000 (67%) 5M (0%) 5M (83%) 423M (40%) 592M Accounts Payable Money owed by a company to its creditors. 3 ways to improve: 1. Go paperless when possible 2. Look for discounts 3. Standardize your accounts payable workflow process Liabilities Horizontal 2016 2017 2018 2019 2020 2021 678M (12%) 756M (12%) 843M (6%) 890M (12%) 1B (11%) 110M Income Tax Payable Income tax payable is a type of account in the current liabilities section of a company's balance sheet. It is compiled of taxes due to the government within one year. 3 ways to improve: 1. Open an interest-bearing bank account
  • 13. 2. Skip some of the credits for which you are eligible 3. Accelerate advanced payments in the current year instead of delaying payment until the next tax year. Liabilities Horizontal 2016 2017 2018 2019 2020 2021 68M (26%) 86M (-60%) 34M (15%) 39M (-74%) 10M (-93%) 700,000 Other Current Liabilities Other Current Liabilities are categories of short-term debt that are lumped together on the balance sheet. 3 ways to improve: to reduce 1. Sell unnecessary assets 2. Factor invoices 3. Use investments or cash to pay off loans Liabilities Horizontal 2016 2017 2018 2019 2020 2021 445M (25%) 555M (-2%) 543M (5%) 570M (13%) 641M (10%) 705M Miscellaneous Current Liabilities
  • 14. Miscellaneous Current Liabilities is an account for current liabilities that do not fall into any of the categories already defined. 3 ways to improve: to reduce 1. Reduce costs 2. Increase income 3. Restructure liabilities Liabilities Horizontal 2016 2017 2018 2019 2020 2021 350M (19%) 418M (-0.2%) 417M (-3%) 405M (58%) 641M (18%) 756M Total Current Liabilities Total Current Liabilities are the claims to the company's assets that are due within one year or the cycle of operations. 3 ways to improve: 1. Restructure assets 2. Raise more capital 3. Exit the business Liabilities Horizontal 2016 2017 2018 2019 2020 2021
  • 15. 1B (0%) 1B (0%) 1B (100%) 2B (0%) 2B (25%) 2.5B Long Term Debt Long Term Debt is any amount of outstanding debt a company holds that has a maturity of 12 months or longer. 3 ways to improve: to reduce 1. Increase profitable sales 2. Sell assets and lease them back 3. Bring in an investor Liabilities Horizontal 2016 2017 2018 2019 2020 2021 5M(0%) 5M (1100%) 60M (-8%) 55M (5355%) 3B (1612%) 51B Deferred Taxes-Debit Corporate bookkeepers debit an asset account to increase its value and credit the account to reduce its worth. 3 ways to improve: 1. Try to stop losses from operations 2. Pay the taxes 3. Use the straight line method
  • 16. Liabilities Horizontal 2016 2017 2018 2019 2020 2021 6M(667%) 46M (-67%) 14M (-7%) 13M (8%) 14M (150%) 35M Other Liabilities Other Liabilities are all miscellaneous obligations that a company lumps together on financial statements. 3 ways to improve: 1. Sell unnecessary assets 2. Convert necessary assets into liabilities 3. Factor invoices Liabilities Horizontal 2016 2017 2018 2019 2020 2021 175M (11%) 195M (9%) 213M (-5%) 203M(-34%) 134M (-5%) 127M Total Liabilities Total liabilities are the aggregate debt and financial obligations owed by a business to individuals and organizations at any specific period of time. 3 ways to improve:
  • 17. 1. Rework your business budget 2. Reduce business expenses 3. Increase customer sales Liabilities Horizontal 2016 2017 2018 2019 2020 2021 2B (0%) 2B (-0%) 2B(0%) 2B(150%) 5B(38%) 7B ST Debt & Current Portion LT Debt & Accounts Payable Liabilities Vertical 2016 2017 2018 2019 2020 2021 589,000 (0.1%) 646,000 (0.1%) 5M (0.3%) 5M (0.3%) 423M (8%) 2% Total Liabilities 2016 2017 2018 2019 2020 2B 2B 2B 2B 5B 2016 2017 2018 2019 2020 2021 678M (34%) 756M (38%) 843M (42%) 890M (45%) 1B (20%) 36%
  • 18. ST Debt & Current Portion LT Debt Accounts Payable Income Tax Payable & Other Current Liabilities Liabilities Vertical 2016 2017 2018 2019 2020 2021 68M (3%) 86M (4%) 34M (2%) 39M (2%) 10M (0.2%) 2% Total Liabilities 2016 2017 2018 2019 2020 2B 2B 2B 2B 5B 2016 2017 2018 2019 2020 2021 445M (22%) 555M (28%) 543M (27%) 570M (29%) 641M (13%) 24% Income Tax Payable Other current liabilities
  • 19. Miscellaneous Current Liabilities & Total Current Liabilities Liabilities Vertical 2016 2017 2018 2019 2020 2021 350M (18%) 418M (21%) 417M (21%) 405M (20%) 641M (13%) 19% Total Liabilities 2016 2017 2018 2019 2020 2B 2B 2B 2B 5B 2016 2017 2018 2019 2020 2021 1B (50%) 1B (50%) 1B (50%) 2B (100%) 2B (40%) 58% Miscellaneous Current Liablilities Total Current Liabilities Long Term Debt & Deferred Taxes-Debit Liabilities Vertical 2016 2017 2018 2019 2020 2021 5M(0.3%) 5M (0.3%) 60M (3%) 55M (3%) 3B (60%) 13% Total Liabilities
  • 20. 2016 2017 2018 2019 2020 2B 2B 2B 2B 5B 2016 2017 2018 2019 2020 2021 6M(0.3%) 46M (2%) 14M (0.7%) 13M (0.7%) 14M (0.3%) 0.8% Long Term Debt Deferred Taxes-Debit Other Liabilities Liabilities Vertical 2016 2017 2018 2019 2020 2021 175M (9%) 195M (10%) 213M (11%) 203M(10%) 134M (3%) 9% Total Liabilities 2016 2017 2018 2019 2020 2B 2B 2B 2B 5B Other Liabilities Beginning iOS 7 Development: Exploring the iOS SDK
  • 21. by Jack Nutting, Fredrik Olsson, David Mark and Jeff LaMarche Apress. (c) 2014. Copying Prohibited. Reprinted for Personal Account, American Public University System [email protected] Reprinted with permission as a subscription benefit of Skillport, All rights reserved. Reproduction and/or distribution in whole or in part in electronic,paper or other forms without written permission is prohibited. Chapter 3: Handling Basic Interaction Overview Our Hello, World application was a good introduction to iOS development using Cocoa Touch, but it was missing a crucial capability—the ability to interact with the user. Without that, our application is severely limited in terms of what it can accomplish. In this chapter, we're going to write a slightly more complex application—one that will feature two buttons as well as a label (see Figure 3-1). When the user taps either of the buttons, the label's text will change. This may seem like a rather simplistic example, but it demonstrates the key concepts involved in creating interactive iOS apps. Just for fun, we're also going to introduce you to the NSAttributedString class, which lets you use styled text with many CocoaTouch GUI elements.
  • 22. Figure 3-1: The simple two-button application we will build in this chapter The Model-View-Controller Paradigm Before diving in, a bit of theory is in order. The designers of Cocoa Touch were guided by a concept called Model-View- Controller (MVC), which is a very logical way of dividing the code that makes up a GUI-based application. These days, almost all object-oriented frameworks pay a certain amount of homage to MVC, but few are as true to the MVC model as Cocoa Touch. The MVC pattern divides all functionality into three distinct categories: Model: The classes that hold your application's data. View: Made up of the windows, controls, and other elements that the user can see and interact with. Controller: The code that binds together the model and view. It contains the application logic that decides how to handle the user's inputs. The goal in MVC is to make the objects that implement these three types of code as distinct from one another as possible. Any object you create should be readily identifiable as belonging in one of the three categories, with little or no functionality that could be classified as being either of the other two. An object that implements a button, for example, shouldn't contain code to process data when that button is tapped, and an implementation of a bank account shouldn't contain code to draw a table
  • 23. to display its transactions. MVC helps ensure maximum reusability. A class that implements a generic button can be used in any application. A class that implements a button that does some particular calculation when it is clicked can be used only in the application for which it was originally written. When you write Cocoa Touch applications, you will primarily create your view components using a visual editor within Xcode called Interface Builder, although you will also modify, and sometimes even create, your user interfaces from code. Your model will be created by writing Objective-C classes to hold your application's data or by building a data model using something called Core Data, which you'll learn about in Chapter 13. We won't be creating any model objects in this chapter's application because we do not need to store or preserve data. However, we will introduce model objects as our applications get more complex in future chapters. Your controller component will typically be composed of classes that you create and that are specific to your application. Controllers can be completely custom classes (NSObject subclasses), but more often they will be subclasses of one of several existing generic controller classes from the UIKit framework, such as UIViewController (as you'll see shortly). By subclassing one of these existing classes, you will get a lot of functionality for free and won't need to spend time recoding the wheel, so to speak. As we get deeper into Cocoa Touch, you will quickly start to see how the classes of the UIKit framework follow the
  • 24. principles of MVC. If you keep this concept in the back of your mind as you develop, you will end up creating cleaner, more easily maintained code. Beginning iOS 7 Development: Exploring the iOS SDK Reprinted for ZU7S5/5738005, American Public University System Apress, Jack Nutting, Fredrik Olsson, David Mark, and Jeff LaMarche (c) 2014, Copying Prohibited Page 2 of 16 Creating Our Project It's time to create our next Xcode project. We're going to use the same template that we used in the previous chapter: Single View Application. By starting with this simple template again, it will be easier for you to see how the view and controller objects work together in an iOS application. We'll use some of the other templates in later chapters. Launch Xcode and select File New Project… or press N. Select the Single View Application template, and then click Next. You'll be presented with the same options sheet that you saw in the previous chapter. In the Product Name field, type the name of our new application, Button Fun. The Organization Name, Company Identifier, and Class Prefix fields should still have the values you used in the previous chapter (Apress, com.apress, and BID), so you can leave those alone. Just as we did with Hello, World, we're going to write an iPhone application, so select iPhone for Devices. Figure 3-2 shows the completed options sheet.
  • 25. Figure 3-2: Naming your project and selecting options Hit Next, and you'll be prompted for a location for your project. You can leave the Create git repository checkbox checked or unchecked, whichever you prefer. Save the project with the rest of your book projects. Looking at the View Controller A little later in this chapter, we'll design a view (or user interface) for our application using Interface Builder, just as we did in the previous chapter. Before we do that, we're going to look at and make some changes to the source code files that were created for us. Yes, Virginia, we're actually going to write some code in this chapter. Before we make any changes, let's look at the files that were created for us. In the project navigator, the Button Fun group should already be expanded; but if it's not, click the disclosure triangle next to it (see Figure 3-3). Figure 3-3: The project navigator showing the class files that were created for us by the project template. Note that our class prefix was automatically incorporated into the class file names The Button Fun folder should contain four source code files (the ones that end in .h or .m) along with a storyboard file and an asset catalog for containing any images our app needs. The four source code files implement two classes that our application needs: our application delegate and the view controller for our application's only view. Notice that Xcode automatically added the prefix we
  • 26. specified to all of our class names. We'll look at the application delegate a little later in the chapter. First, we'll work with the view controller class that was created for us. The controller class called BIDViewController is responsible for managing our application's view. The BID part of the name is derived automatically from the class prefix we specified, and the ViewController part of the name identifies that this class is, well, a view controller. Click BIDViewController.h in the Groups & Files pane, and take Beginning iOS 7 Development: Exploring the iOS SDK Reprinted for ZU7S5/5738005, American Public University System Apress, Jack Nutting, Fredrik Olsson, David Mark, and Jeff LaMarche (c) 2014, Copying Prohibited Page 3 of 16 a look at the contents of the class's header file: #import <UIKit/UIKit.h> @interface BIDViewController : UIViewController @end Not much to it, is there? BIDViewController is a subclass of UIViewController, which is one of those generic controller classes we mentioned earlier. It is part of the UIKit framework, and by subclassing this class, we get a bunch of functionality for free. Xcode doesn't know what our application-specific functionality is going to be, but
  • 27. it does know that we're going to have some, so it has created this class for us to write that application-specific functionality. Understanding Outlets and Actions In Chapter 2, you used Xcode's Interface Builder to design a simple user interface. A moment ago, you saw the shell of a view controller class. There must be some way for the code in this view controller class to interact with the objects in the storyboard, right? Absolutely! A controller class can refer to objects in a storyboard or nib file by using a special kind of property called an outlet. Think of an outlet as a pointer that points to an object within the user interface. For example, suppose you created a text label in Interface Builder (as we did in Chapter 2) and wanted to change the label's text from within your code. By declaring an outlet and connecting that outlet to the label object, you would then be able to use the outlet from within your code to change the text displayed by the label. You'll see how to do just that in this chapter. Going in the opposite direction, interface objects in our storyboard or nib file can be set up to trigger special methods in our controller class. These special methods are known as action methods (or just actions). For example, you can tell Interface Builder that when the user taps a button, a specific action method within your code should be called. You could even tell Interface Builder that when the user first touches a button, it should call one action method; and then later, when the finger is lifted off the button, it should call a different action method. Xcode supports multiple ways of creating outlets and actions. One way is to specify them in our source code before using
  • 28. Interface Builder to connect them with our code. Xcode's assistant view gives us a much faster and more intuitive approach that lets us create and connect outlets and actions in a single step, a process we're going to look at shortly. But before we start making connections, let's talk about outlets and actions in a little more detail. Outlets and actions are two of the most basic building blocks you'll use to create iOS apps, so it's important that you understand what they are and how they work. Outlets Outlets are special Objective-C class properties that are declared using the keyword IBOutlet. Declaring an outlet is done either in your controller's class header file or in a special section (called the class extension) of your controller's implementation file. It might look something like this: @property (weak, nonatomic) IBOutlet UIButton *myButton; This example is an outlet called myButton, which can be set to point to any button in Interface Builder. The IBOutlet keyword isn't built into the Objective-C language. It's a simple C preprocessor definition in a system header file, where it looks something like this: #ifndef IBOutlet #define IBOutlet #endif Confused? IBOutlet does absolutely nothing as far as the compiler is concerned. Its sole purpose is to act as a hint to tell Xcode that this is a property that we're going to want to connect to an object in a nib file. Any property that
  • 29. you create and want to connect to an object in a nib file must be preceded by the IBOutlet keyword. Fortunately, Xcode will now create outlets for us automatically. Outlet Changes Over time, Apple has changed the way that outlets are declared and used. Since you are likely to run across older code at some point, let's look at how outlets have changed. In the first version of this book, we declared both a property and its underlying instance variable for our outlets. At that time, properties were a new construct in the Objective-C language, and they required you to declare a corresponding instance variable: @interface MyViewController : UIViewController { UIButton *myButton; } @property (weak, nonatomic) UIButton *myButton; @end Back then, we placed the IBOutlet keyword before the instance variable declaration: IBOutlet UIButton *myButton; This was how Apple's sample code was written at the time. It was also how the IBOutlet keyword had traditionally been used in Cocoa and NeXTSTEP. By the time we wrote the second edition of the book, Apple had moved away from placing the IBOutlet keyword in front of the instance variable, and it became standard
  • 30. to place it within the property declaration: @property (weak, nonatomic) IBOutlet UIButton *myButton; Even though both approaches continued to work (and still do), we followed Apple's lead and changed the book code so that the IBOutlet keyword was in the property declaration rather than in the instance variable declaration. When Apple switched the default compiler from the GNU C Compiler (GCC) to the Low Level Virtual Machine (LLVM) recently, it stopped being necessary to declare instance variables for properties. If LLVM finds a property without a matching instance variable, it will create one automatically. As a result, in this edition of the book, we've stopped declaring instance variables for our outlets altogether. All of these approaches do exactly the same thing, which is to tell Interface Builder about the existence of an outlet. Placing the IBOutlet keyword on the property declaration is Apple's current recommendation, so that's what we're going to use. But we wanted to make you aware of the history in case you come across older code that has the IBOutlet keyword on the instance variable. Beginning iOS 7 Development: Exploring the iOS SDK Reprinted for ZU7S5/5738005, American Public University System Apress, Jack Nutting, Fredrik Olsson, David Mark, and Jeff LaMarche (c) 2014, Copying Prohibited Page 4 of 16 You can read more about Objective-C properties in the book
  • 31. Learn Objective-C on the Mac by Scott Knaster, Waqar Malik, and Mark Dalrymple (Apress, 2012) and in the document called Introduction to the Objective-C Programming Language, available from Apple's Developer web site at http://developer.apple.com/library/ios/#documentation/ Cocoa/Conceptual/ProgrammingWithObjectiveC. Actions In a nutshell, actions are methods that are declared with a special return type, IBAction, which tells Interface Builder that this method can be triggered by a control in a nib file. The declaration for an action method will usually look like this: - (IBAction)doSomething:(id)sender; It might also look like this: - (IBAction)doSomething; The actual name of the method can be anything you want, but it must have a return type of IBAction, which is the same as declaring a return type of void. A void return type is how you specify that a method does not return a value. Also, the method must either take no arguments or take a single argument, usually called sender. When the action method is called, sender will contain a pointer to the object that called it. For example, if this action method was triggered when the user tapped a button, sender would point to the button that was tapped. The sender argument exists so that you can respond to multiple controls using a single action method. It gives you a way to identify which control called the action method.
  • 32. Tip There's actually a third, less frequently used type of IBAction declaration that looks like this: - (IBAction)doSomething:(id)sender forEvent:(UIEvent *)event; We'll begin talking about control events in the next chapter. It won't hurt anything if you declare an action method with a sender argument and then ignore it. You will likely see a lot of code that does just that. Action methods in Cocoa and NeXTSTEP needed to accept sender whether they used it or not, so a lot of iOS code, especially early iOS code, was written that way. Now that you understand what actions and outlets are, you'll see how they work as we design our user interface. Before we start doing that, however, we have one quick piece of housekeeping to do to keep everything neat and orderly. Cleaning Up the View Controller Single-click BIDViewController.m in the project navigator to open the implementation file. As you can see, there's a small amount of boilerplate code in the form of viewDidLoad and didReceiveMemoryWarning methods that were provided for us by the project template we chose. These methods are commonly used in UIViewController subclasses, so Xcode gave us stub implementations of them. If we need to use them, we can just add our code there. However, we don't need any of these stub implementations for this project, so all they're doing is taking up space and making our code harder to read. We're going to do our future selves a favor and clear away methods that we don't need, so go ahead and delete
  • 33. those methods. At the top of the file, you'll also see an empty class extension ready for us to use. A class extension is a special kind of Objective-C category declaration that lets you declare methods and properties that will only be usable within a class's primary implementation block, within the same file. We'll use class extensions later in the book but not here, so delete the empty @implementation…@end pair as well. When you're finished, your implementation should look like this: #import "BIDViewController.h" @implementation BIDViewController @end That's much simpler, huh? Don't worry about those methods you just deleted. You'll be introduced to most of them throughout the course of the book. Designing the User Interface Make sure you save the changes you just made, and then single- click Main.storyboard to open your application's view in Xcode's Interface Builder (see Figure 3-4). As you'll remember from the previous chapter, the white window that shows up in the editor represents your application's one and only view. If you look back at Figure 3-1, you can see that we need to add two buttons and a label to this view. Beginning iOS 7 Development: Exploring the iOS SDK Reprinted for ZU7S5/5738005, American Public University
  • 34. System Apress, Jack Nutting, Fredrik Olsson, David Mark, and Jeff LaMarche (c) 2014, Copying Prohibited Page 5 of 16 Figure 3-4: Main.storyboard open for editing in Xcode's Interface Builder Let's take a second to think about our application. We're going to add two buttons and a label to our user interface, and that process is very similar to what we did in the previous chapter. However, we're also going to need outlets and actions to make our application interactive. The buttons will need to each trigger an action method on our controller. We could choose to make each button call a different action method; but since they're going to do essentially the same task (update the label's text), we will need to call the same action method. We'll differentiate between the two buttons using that sender argument we discussed earlier in the section on actions. In addition to the action method, we'll also need an outlet connected to the label, so that we can change the text that the label displays. Let's add the buttons first and then place the label. We'll create the corresponding actions and outlets as we design our interface. We could also manually declare our actions and outlets and then connect our user interface items to them, but why do extra work when Xcode will do it for us? Adding the Buttons and Action Method Our first order of business is to add two buttons to our user interface. We'll then have Xcode create an empty action method
  • 35. for us, and we can connect both buttons to that action method. This will cause the buttons, when tapped by the user, to call that action method. Any code we place in that action method will be executed when the user taps the button. Select View Utilities Show Object Library or press to open the object library. Type UIButton into the object library's search box (you actually need to type only the first four characters, UIBu, to narrow down the list). Once you're finished typing, only one item should appear in the object library: Button (see Figure 3-5). Figure 3-5: The Button as it appears in the object library Beginning iOS 7 Development: Exploring the iOS SDK Reprinted for ZU7S5/5738005, American Public University System Apress, Jack Nutting, Fredrik Olsson, David Mark, and Jeff LaMarche (c) 2014, Copying Prohibited Page 6 of 16 Drag Button from the library and drop it on the white window inside the editing area. This will add a button to your application's view. Place the button along the left side of the view the appropriate distance from the left edge by using the blue guidelines that appear to place it. For vertical placement, use the blue guidelines to place the button halfway down in the view. You can use Figure 3-1 as a placement guide, if that helps. Note The little, blue guidelines that appear as you move objects around in Interface Builder are there to help you stick to the
  • 36. iOS Human Interface Guidelines (usually referred to as the HIG). Apple provides the HIG for people designing iPhone and iPad applications. The HIG tells you how you should—and shouldn't—design your user interface. You really should read it because it contains valuable information that every iOS developer needs to know. You'll find it at http://developer.apple.com/library/ios/documentation/ UserExperience/Conceptual/MobileHIG/. Double-click the newly added button. This will allow you to edit the button's title. Give this button a title of Left. Now, it's time for some Xcode magic. Select View Assistant Editor Show Assistant Editor, or press to open the assistant editor. You can also show and hide the assistant editor by clicking the middle editor button in the collection of seven buttons on the upper-right side of the project window (see Figure 3-6). Figure 3-6: The Show the Assistant editor toggle button Unless you specifically request otherwise (see the options in the Assistant Editor menu), the assistant editor will appear to the right of the editing pane. The left side will continue to show Interface Builder, but the right will display either BIDViewController.h or BIDViewController.m, which are the header and implementation files for the view controller that "owns" the view you're looking at. Tip After opening the assistant editor, you may need to resize your window to have enough room to work. If you're on a smaller screen, like the one on a MacBook Air, you might need to close the
  • 37. utility view and/or project navigator to give yourself enough room to use the assistant editor effectively. You can do this easily using the three view buttons in the upper right of the project window (see Figure 3-6). Remember the View Controller icon we discussed in the previous chapter? This is the same thing all over again. Xcode knows that our view controller class is responsible for displaying this view, and so the assistant editor knows to show us the header and/or implementation of the view controller class, which are the most likely places we'll want to create to connect actions and outlets. As you saw earlier, there's really not much in the BIDViewController class. It's just an empty UIViewController subclass. But it won't be an empty subclass for long! We're now going to ask Xcode to automatically create a new action method for us and associate that action with the button we just created. We're going to add these definitions to the header file. If that's not currently shown in the assistant view, use the jump bar above it to select BIDViewController.h. To do this, begin by clicking your new button so it is selected. Now, hold down the control key on your keyboard, and then click-and-drag from the button over to the source code in the assistant editor. You should see a blue line running from the button to your cursor (see Figure 3-7). This blue line is how we connect objects in IB to code or other objects. Beginning iOS 7 Development: Exploring the iOS SDK Reprinted for ZU7S5/5738005, American Public University
  • 38. System Apress, Jack Nutting, Fredrik Olsson, David Mark, and Jeff LaMarche (c) 2014, Copying Prohibited Page 7 of 16 Figure 3-7: Control-dragging to source code will give you the option to create an outlet, action, or outlet collection Tip You can drag that blue line to anything you want to connect to your button: to the header file in the assistant editor, to the File's Owner icon, to any of the other icons on the left side of the editing pane, or even to other objects in the editing area. If you move your cursor so it's between the @interface and @end keywords (see Figure 3-7), a gray box will appear, letting you know that releasing the mouse button will insert an outlet, an action, or an outlet collection for you. Note We use actions and outlets in this book, but we do not use outlet collections. Outlet collections allow you to connect multiple objects of the same kind to a single NSArray property, rather than creating a separate property for each object. To finish this connection, release your mouse button, and a floating pop-up will appear, like the one shown in Figure 3-8. This window lets you customize your new action. In the window, click the pop-up menu labeled Connection and change the selection from Outlet to Action. This tells Xcode that we want to create an action instead of an outlet.
  • 39. Figure 3-8: The floating pop-up that appears after you control- drag to source code The pop-up will change to look like Figure 3-9. In the Name field, type buttonPressed. When you're finished, do not hit the Return key. Pressing Return would finalize our outlet, and we're not quite ready to do that. Instead, press the Tab key to move to the Type field and type in UIButton, replacing the default value of id. Beginning iOS 7 Development: Exploring the iOS SDK Reprinted for ZU7S5/5738005, American Public University System Apress, Jack Nutting, Fredrik Olsson, David Mark, and Jeff LaMarche (c) 2014, Copying Prohibited Page 8 of 16 Figure 3-9: Changing the connection type to Action changes the appearance of the pop-up Note As you probably remember, an id is a generic pointer that can point to any Objective-C object. We could leave this as id, and it would work fine; but if we change it to the class we expect to call the method, the compiler can warn us if we try to do this from the wrong type of object. There are times when you'll want the flexibility to be able to call the same action method from different types of controls; and in those cases, you would want to leave this set to id. In our case, we're only going to call this method from buttons, so we're letting Xcode and LLVM know that. Now, it can warn us if we unintentionally try to connect something else to it.
  • 40. There are two fields below Type, which we will leave at their default values. The Event field lets you specify when the method is called. The default value of Touch Up Inside fires when the user lifts a finger off the screen if—and only if—the finger is still on the button. This is the standard event to use for buttons. This gives the user a chance to reconsider. If the user moves a finger off the button before lifting it off the screen, the method won't fire. The Arguments field lets you choose between the three different method signatures that can be used for action methods. We want the sender argument, so that we can tell which button called the method. That's the default, so we just leave it as is. Hit the Return key or click the Connect button, and Xcode will insert the action method for you. Your BIDViewController.h file should now look like this: #import <UIKit/UIKit.h> @interface BIDViewController : UIViewController - (IBAction)buttonPressed:(UIButton *)sender; @end Xcode has now added a method declaration to your class's header file for you. Use the jump bar above the assistant editor to switch over to BIDViewController.m, and you'll see that it has also added a method stub for you. - (IBAction)buttonPressed:(UIButton *)sender { } In a few moments, we'll come back here to write the code that
  • 41. needs to run when the user taps either button. In addition to creating the method declaration and implementation, Xcode has also connected that button to this action method and stored that information in the storyboard. That means we don't need to do anything else to make that button call this method when our application runs. Go back to Main.storyboard and drag out another button, this time placing the button on the right side of the screen. After placing it, double-click it and change its name to Right. The blue lines will pop up to help you align it with the right margin, as you saw before, and they will also help you align the button vertically with the other button. Tip Instead of dragging a new object out from the library, you could hold down the inline key (the Option key) and drag the original object (the Left button in this example) over. Holding down the key tells Interface Builder to drag out a copy of the original object. This time, we don't want to create a new action method. Instead, we want to connect … Dick’s Sporting Goods Manami Maehama Professor Martin Horizontal & Vertical Analysis Balance Sheet
  • 42. Cash & Short Term Investments Cash and Short Term investments is the sum of two balance sheet line items: cash and equivalents and short term investments in marketable securities. 3 ways to improve: 1. Lease, Don’t Buy. 2. Offer Discounts on Loans 3. Conduct Customer Credit Checks Assets Horizontal 2016 2017 2018 2019 2020 2021 119M (39%) 165M (-39%) 101M (13%) 114M (-39%) 70M (- 6.5%) 69M Total Accounts Receivable Total Accounts receivable is the balance of money due to a firm for goods or services delivered or used but not yet paid for by customers. 3 ways to improve : 1. Move fast on past-due receivables. 2. Consider offering an early payment discount 3. Consider offering a payment plan ASSET Horizontal 2016 2017 2018 2019 2020 2021
  • 43. 67M (16%) 78M (-17%) 65M (-32%) 44M (34%) 59M (0.25%) 59M Inventories Inventory is the term for the goods available for sale and raw materials used to produce goods available for sale. 3 ways to improve : 1. Avoid dead stock. 2. Save on storage costs 3. Regular auditing ASSET Horizontal 2016 2017 2018 2019 2020 2021 2B (0%) 2B (0%) 2B (0%) 2B (0%) 2B (0%) 2B Total Current Assets Total current assets represent all the assets of a company that are expected to be conveniently sold, consumed, utilized or exhausted through the standard business operations, which can lead to their conversion to a cash value over the next one year period. 3 ways to improve : 1. Pay off Current Liabilities. 2. Sell-off Unproductive Assets. 3. Improve Current Asset by Rising Shareholders Funds
  • 44. ASSET Horizontal 2016 2017 2018 2019 2020 2021 2B (0%) 2B (0%) 2B (0%) 2B (0%) 2B (0%) 2B Net Property, Plant & Equipment Net Property, Plant, and Equipment is the value of all buildings, land, furniture, and other physical capital that a business has purchased to run its business. 3 ways to improve : 1. Ins and outs of depreciation 2. Use an accelerated method that takes most most of the depreciation up front 3. Subtract depreciation over time ASSET Horizontal 2016 2017 2018 2019 2020 2021 1B (100%) 2B (0%) 2B (0%) 2B (100%) 4B (50%) 5B Intangible Assets An intangible asset is an asset that is not physical in nature. 3 ways to improve: 1. Identify Your Intangible Asset
  • 45. 2. Standardize Systems and Processes 3. Develop Your Intangibles ASSET Horizontal 2016 2017 2018 2019 2020 2021 310M (24%) 385M (0.5%) 387M (-2%) 380M (-10%) 340M (3%) 340M Net Goodwill Goodwill is an intangible asset that is associated with the purchase of one company by another. 3 ways to improve: 1. Cash-Flow Statement Basics 2. Investing Cash Flow 3. Financing Cash Flow ASSET Horizontal 2016 2017 2018 2019 2020 2021 200M (23%) 245M (2%) 250M (0%) 250M (-2%) 245M (6%) 245M Other Assets Other assets are a grouping of accounts that are listed as a separate line item in the assets section of the balance sheet.
  • 46. 3 ways to improve: 1. Find new sources of income 2. Get out of debt 3. Spend less ASSET Horizontal 2016 2017 2018 2019 2020 2021 83M (30%) 108M (11%) 120M (-12%) 106M (26%) 134M (14%) 152M Tangible Other Assets Tangible assets include both fixed assets, such as machinery, buildings and land, and current assets, such as inventory. 3 ways to improve: 1. A high net tangible assets value can serve as a cushion against uncertainty that can take place in the market and help to support a company’s stock price. 2. Determining this value helps to find out if the market share price of a company is overvalued or undervalued. 3. As tangible current assets can easily be converted into cash, they provide liquidity to the business and, thus, reduce risk
  • 47. ASSET Horizontal 2016 2017 2018 2019 2020 2021 83M (30%) 108M (11%) 120M (-12%) 106M (26%) 134M (14%) 152M Total Assets Total assets refers to the total amount of assets owned by a person or entity. 3 ways to improve: 1. Reduce asset base 2. Improve Productivity And Lower Costs 3. Increase Sales Revenue ASSET Horizontal 2016 2017 2018 2019 2020 2021 4B (0%) 4B(0%) 4B(0%) 4B(75%) 7B(19%) 8B Total Accounts Receivable & Inventories ASSET Vertical 2016 2017 2018 2019 2020 2021 67M (2%) 78M (2%) 65M (2%) 44M (1%) 59M (1%) 2% Total Assets
  • 48. 2016 2017 2018 2019 2020 4B 4B 4B 4B 7B 2016 2017 2018 2019 2020 2021 2B (50%) 2B (50%) 2B (50%) 2B (50%) 2B (29%) 49% Total Accounts Receivable Inventories Cash & short term investments & Total current assets ASSET Vertical 2016 2017 2018 2019 2020 2021 119M (3%) 165M (4%) 101M (3%) 114M (3%) 70M (1%) (3%) Total Assets 2016 2017 2018 2019 2020 4B 4B 4B 4B 7B
  • 49. 2016 2017 2018 2019 2020 2021 2B (50%) 2B (50%) 2B (50%) 2B (50%) 2B (29%) (49%) Cash & short term investments Total current assets Net Property, Plant & Equipment & Intangible Assets ASSET Vertical 2016 2017 2018 2019 2020 2021 1B (25%) 2B (50%) 2B (50%) 2B (50%) 4B (57%) (46%) Total Assets 2016 2017 2018 2019 2020 4B 4B 4B 4B 7B 2016 2017 2018 2019 2020 2021 310M (8%) 385M (10%) 387M (10%) 380M
  • 50. (10%) 340M (5%) (9%) Net Property, Plant & Equipment Intangible Assets Net Goodwill & Other Assets ASSET Vertical 2016 2017 2018 2019 2020 2021 200M (5%) 245M (6%) 250M (6%) 250M (6%) 245M (4%) 5% Total Assets 2016 2017 2018 2019 2020 4B 4B 4B 4B 7B 2016 2017 2018 2019 2020 2021
  • 51. 83M (2%) 108M (3%) 120M (3%) 106M (3%) 134M (2%) 3% Net Goodwill Other Assets Tangible Other Assets ASSET Vertical 2016 2017 2018 2019 2020 2021 83M (2%) 108M (3%) 120M (3%) 106M (3%) 134M (2%) 3% Total Assets 2016 2017 2018 2019 2020 4B 4B 4B 4B 7B Tangible Other Assets
  • 52. ST Debt & Current Portion LT Debt The current portion of long-term debt is the amount of principal that will be due within one year of the date of the balance sheet. This amount is reported on the balance sheet as one of the company's current liabilities. 3 ways to improve: 1. A company can keep its long-term debt from ever being classified as a current liability by periodically rolling forward the debt into instruments with longer maturity dates and balloon payments. 2. Pay debts back on time 3. Stop creating more debt Liabilities Horizontal 2016 2017 2018 2019 2020 2021 589,000 (10%) 646,000 (67%) 5M (0%) 5M (83%) 423M (40%) 592M Accounts Payable Money owed by a company to its creditors. 3 ways to improve:
  • 53. 1. Go paperless when possible 2. Look for discounts 3. Standardize your accounts payable workflow process Liabilities Horizontal 2016 2017 2018 2019 2020 2021 678M (12%) 756M (12%) 843M (6%) 890M (12%) 1B (11%) 110M Income Tax Payable Income tax payable is a type of account in the current liabilities section of a company's balance sheet. It is compiled of taxes due to the government within one year. 3 ways to improve: 1. Open an interest-bearing bank account 2. Skip some of the credits for which you are eligible 3. Accelerate advanced payments in the current year instead of delaying payment until the next tax year. Liabilities Horizontal 2016 2017 2018 2019 2020 2021 68M (26%) 86M (-60%) 34M (15%) 39M (-74%) 10M (-93%) 700,000
  • 54. Other Current Liabilities Other Current Liabilities are categories of short-term debt that are lumped together on the balance sheet. 3 ways to improve: to reduce 1. Sell unnecessary assets 2. Factor invoices 3. Use investments or cash to pay off loans Liabilities Horizontal 2016 2017 2018 2019 2020 2021 445M (25%) 555M (-2%) 543M (5%) 570M (13%) 641M (10%) 705M Miscellaneous Current Liabilities Miscellaneous Current Liabilities is an account for current liabilities that do not fall into any of the categories already defined. 3 ways to improve: to reduce 1. Reduce costs 2. Increase income 3. Restructure liabilities Liabilities Horizontal 2016 2017 2018 2019 2020 2021
  • 55. 350M (19%) 418M (-0.2%) 417M (-3%) 405M (58%) 641M (18%) 756M Total Current Liabilities Total Current Liabilities are the claims to the company's assets that are due within one year or the cycle of operations. 3 ways to improve: 1. Restructure assets 2. Raise more capital 3. Exit the business Liabilities Horizontal 2016 2017 2018 2019 2020 2021 1B (0%) 1B (0%) 1B (100%) 2B (0%) 2B (25%) 2.5B Long Term Debt Long Term Debt is any amount of outstanding debt a company holds that has a maturity of 12 months or longer. 3 ways to improve: to reduce 1. Increase profitable sales 2. Sell assets and lease them back
  • 56. 3. Bring in an investor Liabilities Horizontal 2016 2017 2018 2019 2020 2021 5M(0%) 5M (1100%) 60M (-8%) 55M (5355%) 3B (1612%) 51B Deferred Taxes-Debit Corporate bookkeepers debit an asset account to increase its value and credit the account to reduce its worth. 3 ways to improve: 1. Try to stop losses from operations 2. Pay the taxes 3. Use the straight line method Liabilities Horizontal 2016 2017 2018 2019 2020 2021 6M(667%) 46M (-67%) 14M (-7%) 13M (8%) 14M (150%) 35M Other Liabilities Other Liabilities are all miscellaneous obligations that a company lumps together on financial statements.
  • 57. 3 ways to improve: 1. Sell unnecessary assets 2. Convert necessary assets into liabilities 3. Factor invoices Liabilities Horizontal 2016 2017 2018 2019 2020 2021 175M (11%) 195M (9%) 213M (-5%) 203M(-34%) 134M (-5%) 127M Total Liabilities Total liabilities are the aggregate debt and financial obligations owed by a business to individuals and organizations at any specific period of time. 3 ways to improve: 1. Rework your business budget 2. Reduce business expenses 3. Increase customer sales Liabilities Horizontal 2016 2017 2018 2019 2020 2021 2B (0%) 2B (-0%) 2B(0%) 2B(150%) 5B(38%) 7B
  • 58. ST Debt & Current Portion LT Debt & Accounts Payable Liabilities Vertical 2016 2017 2018 2019 2020 2021 589,000 (0.1%) 646,000 (0.1%) 5M (0.3%) 5M (0.3%) 423M (8%) 2% Total Liabilities 2016 2017 2018 2019 2020 2B 2B 2B 2B 5B 2016 2017 2018 2019 2020 2021 678M (34%) 756M (38%) 843M (42%) 890M (45%) 1B (20%) 36% ST Debt & Current Portion LT Debt Accounts Payable Income Tax Payable & Other Current Liabilities Liabilities Vertical
  • 59. 2016 2017 2018 2019 2020 2021 68M (3%) 86M (4%) 34M (2%) 39M (2%) 10M (0.2%) 2% Total Liabilities 2016 2017 2018 2019 2020 2B 2B 2B 2B 5B 2016 2017 2018 2019 2020 2021 445M (22%) 555M (28%) 543M (27%) 570M (29%) 641M (13%) 24% Income Tax Payable Other current liabilities Miscellaneous Current Liabilities & Total Current Liabilities Liabilities Vertical 2016 2017 2018 2019 2020 2021 350M (18%) 418M (21%) 417M (21%) 405M (20%) 641M (13%) 19% Total Liabilities 2016 2017 2018 2019 2020 2B 2B 2B 2B 5B
  • 60. 2016 2017 2018 2019 2020 2021 1B (50%) 1B (50%) 1B (50%) 2B (100%) 2B (40%) 58% Miscellaneous Current Liablilities Total Current Liabilities Long Term Debt & Deferred Taxes-Debit Liabilities Vertical 2016 2017 2018 2019 2020 2021 5M(0.3%) 5M (0.3%) 60M (3%) 55M (3%) 3B (60%) 13% Total Liabilities 2016 2017 2018 2019 2020 2B 2B 2B 2B 5B 2016 2017 2018 2019 2020 2021 6M(0.3%) 46M (2%) 14M (0.7%) 13M (0.7%) 14M (0.3%) 0.8% Long Term Debt Deferred Taxes-Debit
  • 61. Other Liabilities Liabilities Vertical 2016 2017 2018 2019 2020 2021 175M (9%) 195M (10%) 213M (11%) 203M(10%) 134M (3%) 9% Total Liabilities 2016 2017 2018 2019 2020 2B 2B 2B 2B 5B Other Liabilities